mysql - 如何让我的 MySQL 查询运行得更快?
问题描述
我得到了表“plays”的以下表结构:
在这个表中存储了大约 400 万条记录,现在类似于这个查询需要超过 6 秒来检索数据:
select * from plays where id_machine = 52 and cicle = 2 and play = 2450
每部剧集由7000部剧集组成。所以 foo 示例 cicle 3 将有 7000 条播放记录,其中“播放”列将从 1 变为 7000。
我需要大大减少这个时间。
我的一个朋友建议我在索引中转换 play 和 cicle,但我不太确定。
解决方案
尝试使用复合索引也称为多列索引,就像您的情况一样(循环和播放)。它将提供更好的性能。
查询优化器将复合索引用于测试索引中所有列的查询,或测试第一列、前两列等的查询。
http://www.mysqltutorial.org/mysql-index/mysql-composite-index/
推荐阅读
- bash - 多个 grep 和分组输出
- python - 来自外键的字段未在 django admin 中显示数据
- javascript - 如何在每 n 个字符处或最近的前一个空格处拆分字符串
- python-3.x - 如何从不和谐的网络块嵌入中获取文本
- java - Android Studio:编译时错误:原因:org/apache/commons/io/FileUtils
- qt - 将 Qt 中的 .pro 行转换为 cmake 行
- javascript - 查找和更新子文档,如果不存在则创建新的
- amazon-web-services - 将文件移动到 Glacier 是否会导致在 S3 中使用同步进行新的上传?
- c++ - 更改按钮颜色
- c# - C# 使用 DbProviderFactory 远程连接到 Oracle 数据库,ORA-03135:连接失去联系