如何改进此SQL?(MySQL数据库)
数据库是MySQL InnoDB表(切换到MyISAM查看其工作原理)。 该表有大约500000条记录,搜索的字段被编入索引。 我需要很长时间才能得到结果,有时会出现内部服务器错误如何改进此SQL?(MySQL数据库),mysql,sql,database,Mysql,Sql,Database,数据库是MySQL InnoDB表(切换到MyISAM查看其工作原理)。 该表有大约500000条记录,搜索的字段被编入索引。 我需要很长时间才能得到结果,有时会出现内部服务器错误 如何改进查询?研究查询的执行计划。在MySql中,这是使用explain命令完成的 SELECT * FROM inventory WHERE inventory.zip IN (93650,93750,93765,93729,93710,93740,93711,93720,93704,93741,93705,9
如何改进查询?研究查询的执行计划。在MySql中,这是使用
explain
命令完成的
SELECT *
FROM inventory
WHERE inventory.zip IN (93650,93750,93765,93729,93710,93740,93711,93720,93704,93741,93705,93755,93791,93790,93794,93793,93726,93792) AND
inventory.price >= 1000 AND
inventory.year BETWEEN 1977 AND 2011
ORDER BY price ASC LIMIT 0, 25
这将为您提供执行计划。这样,您就可以看到它是否正确地使用了索引,或者您的某个条件是否引发了完整的表扫描。如果需要,您需要另一个索引,或者您可能需要修改查询本身。研究查询的执行计划。在MySql中,这是使用
explain
命令完成的
SELECT *
FROM inventory
WHERE inventory.zip IN (93650,93750,93765,93729,93710,93740,93711,93720,93704,93741,93705,93755,93791,93790,93794,93793,93726,93792) AND
inventory.price >= 1000 AND
inventory.year BETWEEN 1977 AND 2011
ORDER BY price ASC LIMIT 0, 25
这将为您提供执行计划。这样,您就可以看到它是否正确地使用了索引,或者您的某个条件是否引发了完整的表扫描。如果需要,您需要另一个索引,或者可能需要修改查询本身。看起来不错。您可以限制结果并使其非常具体。查看数据库关键区域的索引。也许您可以通过在WHERE子句中使用
price
更改zip
并在price列上添加索引(将索引和其他两列合并)来改进它。您可以限制结果并使其非常具体。查看数据库关键区域的索引。也许您可以通过在WHERE子句中使用price
更改zip
并在price列上添加索引(与其他两列合并索引)来改进它。非常感谢!我不能投票,因为我没有注册。非常感谢!我不能投赞成票,因为我没有注册。