Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql,有人能建议如何改进我的查询/索引吗?_Sql_Mysql_Indexing_Query Optimization - Fatal编程技术网

MySql,有人能建议如何改进我的查询/索引吗?

MySql,有人能建议如何改进我的查询/索引吗?,sql,mysql,indexing,query-optimization,Sql,Mysql,Indexing,Query Optimization,有人能建议我如何改进我的查询吗?它用于站点地图,有80000页,因此是限制 这是我的问题 SELECT PageName FROM pads WHERE RemoveMeDate = '2001-01-01 00:00:00' ORDER BY PadID DESC LIMIT 20000 , 30000 这是我的解释 这是我已经有的索引 此查询的最佳索引可能是列RemoveMeDate、PadID和PageName上的组合索引。如果未自动选择正确的索引,则应查看“强制索引”或“使用索引”

有人能建议我如何改进我的查询吗?它用于站点地图,有80000页,因此是限制

这是我的问题

SELECT PageName
FROM pads
WHERE RemoveMeDate = '2001-01-01 00:00:00'
ORDER BY PadID DESC
LIMIT 20000 , 30000
这是我的解释

这是我已经有的索引


此查询的最佳索引可能是列
RemoveMeDate
PadID
PageName
上的组合索引。如果未自动选择正确的索引,则应查看“强制索引”或“使用索引”


尝试不要使用任何索引。 表中总共有多少行

我注意到您正在查找与just RemoveMeDate上匹配的大约48k行中的10k行-表必须很大,或者您必须选择表中的很大一部分

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)
与强制索引一起使用,以防无法自动选择

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也会忽略它。人们可以希望,有一天当它得到实施时,它会落实到位

可以使用索引列名称规范 以ASC或DESC结尾。这些关键字 允许将来扩展 用于指定升序或降序 索引值存储。目前, 被解析但被忽略;索引值 始终按升序存储


期望改进的目标应该是什么?为了加快1.9秒,我刚刚添加了该索引,但没有改进,但在“关键点”列中的“现在解释”中,它似乎确实使用了该索引。还有什么建议吗?从性能的角度来看,在1.9秒内检索(最多)30000行并不一定那么糟糕。你确定问题不在网络中或客户端的某个地方吗?我已经添加了索引
RemoveMeDate、PadID和PageName
(由上面的Tommi建议),并添加了
自pads使用索引(remmeda\u PadID\u PageName)
但是没有任何改进力索引也没有帮助。我不知道为什么,但我在测试服务器上得到了更好的结果,这是一台速度慢得多的机器,它在实时服务器上超时。你认为这可能与卷有关吗?10k书签查找(从索引键到数据页,再到获取页面名)并不简单是的,我想是的,我想我需要重新考虑我的网站地图。