在时间戳列上创建索引

时间:2019-07-13 08:44:21

标签: mysql sql indexing sql-optimization

我有一个包含产品的产品表。每个产品都有有效期。名为BEGIN的列显示了该产品可用的开始时间的日期和时间,以及显示完成产品可用性的END。 用户可以过滤可用产品的BEGIN和END时间。该过滤器的范围可以从一天中的几小时到几天甚至几周不等。例如从现在到未来3周的可用产品。 找到一些产品时,过滤查询的效果很好。但是如果在此期间没有可用产品,则查询将搜索完整的表,该表具有数百万条记录,并且花费的时间太长。 我尝试索引BEGIN和END,但是没有任何变化,仍然需要太多时间来搜索所有表。索引解决方案吗?我正在使用mysql。 表scehame是:

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);

0 个答案:

没有答案