任何人都可以建议我如何改进我的查询,它用于站点地图和theres 80000页,因此限制。
继承我的查询
SELECT PageName
FROM pads
WHERE RemoveMeDate = '2001-01-01 00:00:00'
ORDER BY PadID DESC
LIMIT 20000 , 30000
继承我的解释
继承我已经
的索引
答案 0 :(得分:2)
此查询的最佳索引可能是列RemoveMeDate
,PadID
和PageName
的组合索引。
答案 1 :(得分:0)
如果没有自动选择正确的索引,你应该查看“强制索引”或“使用索引”。
答案 2 :(得分:0)
使用任何索引尝试不。 整个表格中有多少行?
我注意到你正在寻找大约48k行中的10k行,只匹配RemoveMeDate - 表必须很大,或者你必须选择大部分表。
SELECT PageName
FROM pads USE INDEX()
WHERE RemoveMeDate = '2001-01-01 00:00:00'
ORDER BY PadID DESC
LIMIT 20000 , 30000
不使用任何索引强制它只扫描表。 现在,如果这没有帮助并且速度较慢,请尝试制作一个订购DESC的特定索引,例如尝试下面两个中的一个
CREATE INDEX IX_pads_rmd_iddesc ON pads (RemoveMeDate, PadID DESC, PageName)
CREATE INDEX IX_pads_rmd_iddesc ON pads (RemoveMeDate, PadID DESC)
如果未自动选择,则与FORCE INDEX结合使用
SELECT PageName
FROM pads USE INDEX(IX_pads_rmd_iddesc)
WHERE RemoveMeDate = '2001-01-01 00:00:00'
ORDER BY PadID DESC
LIMIT 20000 , 30000
请注意,即使索引重新创建了“PadID DESC”,MySQL也会忽略它。人们可以希望有一天它实施后就会落实到位。
index_col_name规范可以 以ASC或DESC结束。这些关键字 允许将来的扩展 用于指定升序或降序 索引值存储。目前,他们 被解析但被忽略;指数值 总是以升序存储。