MySql,我不确定我的索引是否正确,或者我是否可以提高查询速度?
我的查询是选择一个日期和一个数字键范围,我不确定我是否能在这方面有所改进,但我想我会问。我希望提高速度 我实际上运行了两个非常相似的查询,一个用于计数,另一个用于获取有限制的记录MySql,我不确定我的索引是否正确,或者我是否可以提高查询速度?,mysql,sql,query-optimization,Mysql,Sql,Query Optimization,我的查询是选择一个日期和一个数字键范围,我不确定我是否能在这方面有所改进,但我想我会问。我希望提高速度 我实际上运行了两个非常相似的查询,一个用于计数,另一个用于获取有限制的记录 SELECT count(Pads.PadID) AS CountOfPadID FROM Pads WHERE ((RemoveMeDate= '2001-01-01 00:00:00') AND (catid between 0 and 11)) ORDER BY VersionAddDate DESC; SE
SELECT count(Pads.PadID) AS CountOfPadID FROM Pads WHERE ((RemoveMeDate=
'2001-01-01 00:00:00') AND (catid between 0 and 11))
ORDER BY VersionAddDate DESC;
SELECT PadID, CatID, IconSoureURL, OsStr, ProgramName, PageName, ProgramVersion,
left(English450,650) as English450, English45, ProgHomeURL, DownloadURL, License,
ReleaseStatus FROM Pads WHERE RemoveMeDate='2001-01-01 00:00:00' AND catid
between 0 and 11 ORDER BY VersionAddDate DESC LIMIT 0,20;
是的,范围可以改变,可以是100到111
我的第一个查询需要0.6秒,奇怪的是,第二个查询非常快,即使使用SQL\u NO\u缓存
这是第一个查询的解释结果。
这是我目前的索引
两个查询返回相同的数据,可能是不同的顺序。但是它们在磁盘/表空间/可能也是相同的索引上接触相同的数据。请您为查询2解释一下。第一个查询实际上为您预热缓存,它将在内存中获取数据,所以第二个查询很快 我们能让它更快吗?可能它已经非常快了,它只看了3条记录,所以索引是完美的。第一个查询可能是在冷缓存/缓冲假脱机上完成的。下次进行基准测试时,首先通过运行一些随机查询和检查来预热缓存 正如@Scrum-Meister所建议的,您可以删除index-RemoveMeDate,它将加快插入速度,如果现在使用它,将减少一些内存压力 检查是否需要调整服务器/存储引擎本身,以充分利用可用硬件并使服务器快速运行 您可以删除单列RemoveMeDatw上的索引RemoveMeDate,它将被以RemoveMeDate开头的其他索引覆盖