下面这个 sql 语句
SELECT *
FROM table
WHERE code = 'x83'
AND start_time <= now()
AND end_time >= now()
ORDER BY `priority`, `created_at`
优化的话,是不是要建一个索引(code, priority, created_at) 中间的 start_time 和 end_time 怎么办?
另外只针对 order by 建立索引( priority, created_at )会生效吗?
1
canbingzt 2017-10-12 17:08:36 +08:00
mysql 的话,where 里的条件全部都需要建索引,并且顺序也要一致
|
2
xinyewdz 2017-10-12 17:10:31 +08:00
建议把 now()函数去掉,直接写值。带函数的字段,应该是没办法使用索引。
|
4
esolve OP @canbingzt 你意思对 (code, start_time, end_time, priority, created_at) 做索引?
这样不行啊,start_time <= now()是一个范围,所以起作用的索引到 start_time 为止,也就是仅仅(code, start_time ) |
5
esolve OP 顶顶
|