gpt4 book ai didi

mysql - 如何改进这个 SQL? (MySQL数据库)

转载 作者:行者123 更新时间:2023-11-29 06:14:12 25 4
gpt4 key购买 nike

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 InnoDB表(切换到MyISAM看看它是如何工作的)。该表大约有 500,000 条记录,并且搜索的字段都已建立索引。我需要很长时间才能得到结果,有时我会收到内部服务器错误。

如何改进查询?

最佳答案

研究查询的执行计划。在 MySql 中,这是使用 explain 命令完成的

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 - 如何改进这个 SQL? (MySQL数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7552005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com