0
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条记录,并且搜索的字段被编入索引。 需要很长时间才能得到结果,有时会出现内部服务器错误。SQL如何改进? (MySQL数据库)
如何改进查询?
看起来不错。你限制了结果并保持它非常具体。查看索引数据库的关键区域。 – Lostsoul
也许你可以通过改变'和'price' zip'提高它的WHERE子句和价格列(组合索引与其他两列)添加索引 – rabudde
非常感谢你。 – Mircea