MySQL-MYSQL查询优化

发布于 2016-11-22 05:54:41 字数 928 浏览 1281 评论 2

有一张表,结构如下 :

+------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+----------------+
| ID | bigint(20) | NO | PRI | NULL | auto_increment |
| DTYPE | varchar(31) | YES | | NULL | |
| COUNT | int(11) | YES | | NULL | |
| STATUS | varchar(255) | YES | | NULL | |
| TYPE | varchar(255) | YES | | NULL | |
| BACKENDRECORD_ID | bigint(20) | YES | MUL | NULL | |
| FRONTRECORD_ID | bigint(20) | YES | MUL | NULL | |
+------------------+--------------+------+-----+---------+----------------+

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

想挽留 2017-08-04 01:50:48

这个sql语句只能增加sort_buffer_size的大小,避免磁盘的IO,按照mysql对group by的几条优化规则:
1、松散索引扫描
详细的可以参考mysql手册,对于聚合函数,只有max()和min()两个函数才能使用索引
2、紧凑索引扫描
“引用GROUP BY关键字元素的前面、中间关键字元素的查询中的所有列,有一个常量等式条件即足够了。等式条件中的常量填充了搜索关键字中的“差距”,可以形成完整的索引前缀。”

甜柠檬 2017-01-24 20:13:56

在mysql优化的方法中,有这么两条:
经常同时存取多列,且每列都含有重复值可考虑建立组合索引;
组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列。

所以你可以试试下面方法:

在STATUS和COUNT两字段上建立组合索引,以STATUS为前导列(如果该字段值很长,可以指定长度)

 ALTER TABLE tc ADD INDEX status_count (STATUS(10),COUNT);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文