首页 > 解决方案 > 优化大型 SQL 查询的方法

问题描述

如果列 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 而不是行)。而且我没有更多的想法。

你对如何处理有什么建议吗?

标签: mysqlsqlquery-optimization

解决方案


首先,使用以下命令构建查询in

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

MySQLIN使用常量值进行优化。没有索引,仍然存在全表扫描。所以,我也推荐一个关于table(id_cat).


推荐阅读