mysql - 优化大型 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 而不是行)。而且我没有更多的想法。
你对如何处理有什么建议吗?
解决方案
首先,使用以下命令构建查询in
:
SELECT *
FROM table
WHERE id_cat IN (50, 51, 52, . . .);
MySQLIN
使用常量值进行优化。没有索引,仍然存在全表扫描。所以,我也推荐一个关于table(id_cat)
.
推荐阅读
- python - 在 Python 中解析 Brainfuck 括号时遇到问题
- gradle - Gradle:从父构建脚本配置子项目(模块)
- ios - CLLocation 高度属性在飞行中的有效性
- bash - 在 makefile 中传递 env var 作为可选
- git - SVN 到 Git 迁移提交历史问题
- json - app()->singleton 中的第二个参数是 laravel 5.4 中的空数组
- javascript - 在 d3v4 中使用 d3.tree() 构建树时遇到问题
- ipython - TypeError:“模块”对象不可调用一个代码,但不可调用另一个
- docker - docker-py:在 IPvlan 网络中创建具有特定 IP 的容器
- python - Python 3 - 类和私有对象