优化大型SQL查询的方法

问题描述 投票:1回答:1

我有一个很长的查询,如果id_cat列与用户搜索匹配,则返回一些记录。

看起来像这样:

SELECT * FROM table WHERE (id_cat = 50 OR id_cat = 51 OR id_cat = 52...) up to some high numbers.

在上述情况下,查询变得很大,这增加了响应时间。

我需要对此进行优化,因为响应时间接近15秒(基本上它会搜索所有类别)。

我应该如何做?

首先,我正在考虑建立如下查询:

SELECT * FROM table WHERE (id_cat = (50 OR = 51 OR = 52))

这应减少sql单词的数量,但它不能像这样工作(返回null而不是行)。而且我没有其他想法了。

您对此有什么建议吗?

mysql sql query-optimization
1个回答
2
投票

首先,使用in建立查询:

SELECT *
FROM table 
WHERE id_cat IN (50, 51, 52, . . .);

MySQL使用常量值优化IN。没有索引,仍然存在全表扫描。因此,我还建议在table(id_cat)上使用索引。

© www.soinside.com 2019 - 2024. All rights reserved.