mysql - 在时间戳列上创建索引
问题描述
我有一个包含产品的产品表。每个产品都有一个可用期。名为 BEGIN 的列显示产品可用的开始时间的日期和时间,以及完成可用性的 END。用户可以过滤可用产品的 BEGIN 和 END 时间。此过滤器可以从一天中的几个小时到几天和几周。例如从现在到未来 3 周的可用产品。查找某些产品时,过滤查询效果很好。但是,如果在此期间没有可用的产品,则查询会搜索包含数百万条记录的完整表,并且花费的时间太长。我试图索引 BEGIN 和 END 但没有任何改变,并且仍然需要太多时间来搜索所有表。索引是解决方案吗?我正在使用mysql。表方案是:
Schema::create('products', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->unsignedInteger('price');
$table->timestamp('begin')->nullable();
$table->timestamp('end')->nullable();
$table->timestamps();
});
查询是:
$products = Product::where('begin' , '>=' , $request->begin)->where('end' , '<=' , $request->end)->simplePaginate(20);
解决方案
推荐阅读
- java - 如何解决我的 Spring Boot 应用程序中的 HikariPool 异常?
- c# - 是否需要“ return await Task.Run(() => PartialView()) ”?
- javascript - 使用 Javascript 创建待办事项列表
- mysql - 编写查询以查找已租借次数第五多的电影的名称
- javascript - 从Javascript中的一系列数字创建一个对象?
- php - 1und1 https 与 .htaccess 和 laravel
- actionscript-3 - 如何使用 Sprite 添加图像列表。as3
- c# - 构建 uwp C# 时发生内部编译器错误
- sas - 如果客户在下个月不再存在,则比较 2 个每月库l
- android - TIdTCPClient Android 未连接到本地 PC 上的 TIdTCPServer