【发布时间】:2017-10-24 12:44:53
【问题描述】:
查询是
SELECT row
FROM `table`
USE INDEX(`indexName`)
WHERE row1 = '0'
AND row2 = '0'
AND row3 >= row4
AND (row5 = '0' OR row5 LIKE 'value')
我有以下 MySQL 查询,我创建了一个索引供使用;
CREATE INDEX indexName ON `table` (row1, row2, row3, row5);
但是,性能并不是很好。它在 6-12 秒内从 5.9+ 百万行表中提取了大约 17,000 多行。
似乎瓶颈是row3 >= row4 - 因为代码中没有这部分,它会在 0.6-0.7 秒内运行。
(来自评论)
row(占位符列名)其实就是表中的id(主键,索引)列,就是我后面输出的结果集。我正在输出与查询中的参数匹配的 ID 数组,然后从该数组中选择一个随机 ID 以通过特定行上的最终查询收集数据。这是作为 rand() 的一种解决方法完成的。需要根据这些知识进行任何调整吗?
【问题讨论】:
-
以 EXPLAIN 开头 ...dev.mysql.com/doc/refman/5.7/en/explain.html
-
我认为您对行和列感到困惑
标签: mysql performance query-performance