首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >慢Sql执行

慢Sql执行
EN

Stack Overflow用户
提问于 2014-09-20 18:15:06
回答 2查看 63关注 0票数 0

我有一个至少包含6万行的表。我的查询是基本的,如下所示:

代码语言:javascript
复制
SELECT `table`.name, `table`.age, `table`.points
                              FROM table
                              GROUP BY name, age
                              ORDER BY date
                              DESC
                              LIMIT 12

结果类似于(12次总计,查询花费了1.2211秒),有时甚至需要2秒才能返回12行。

应该做些什么使我的查询更快?

解释查询:

代码语言:javascript
复制
id | select_type | table |  type  | possible_keys |  key  |  key_len  |  ref  | rows  | Extra |
1       Extra      table    ALL        NULL          NULL    NULL        NULL   65704   Using temporary; Using filesort
EN

回答 2

Stack Overflow用户

发布于 2014-09-20 18:24:13

这太长了,不能发表评论。日期索引将有所帮助,如果没有它,它将被迫进行表格扫描。还有什么是名称的基数,即在行数上划分的不同名称的数量?在低的情况下,您可以创建一个包含这些不同名称的表,并将其连接起来,目的是进行松散的索引扫描。首先,尝试一个组合索引:

代码语言:javascript
复制
 ALTER TABLE t1 ADD KEY indexName (name,age,date)

有关更多细节,请在查询之前添加一个EXPLAIN,并根据结果编辑问题。

票数 1
EN

Stack Overflow用户

发布于 2014-09-20 18:19:24

您可能希望在SQL数据库中创建索引。如果您正在使用MYSQL,您可以这样创建它们

代码语言:javascript
复制
ALTER TABLE TABLE_NAME ADD INDEX (COLUMN_NAME);

就你的情况而言,这就像:

代码语言:javascript
复制
ALTER TABLE `table` ADD INDEX (name);
ALTER TABLE `table` ADD INDEX (age);
ALTER TABLE `table` ADD INDEX (points);

您可能还想看看this question

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25951890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档