首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调优mysql慢查询?

如何调优mysql慢查询?
EN

Stack Overflow用户
提问于 2016-10-20 14:37:11
回答 3查看 54关注 0票数 0

我想优化这个mysql查询。在我的例子中,它是超级慢的,因为它需要5.6秒来执行。我使用profiler来解决这个问题,但我对数据库没有太多的了解。我的问题是:

代码语言:javascript
复制
SELECT 
                        n.name,
                        n.computedmeaning,
                        m.origin,                             
                        m.gender,
                        m.pronunciation,
                        m.similar,
                        m.variants
                        FROM
                        names n
                        INNER JOIN meta m ON m.nameid = n.id
                        WHERE m.religion = 'hindu'
                        AND n.computedmeaning IS NOT NULL ORDER BY n.name LIMIT 0 , 30

我只有meta表上的PARIMARY INDEX "id"name表上的PRIMARY INDEX "id",还在name表上启用全文搜索。以下是屏幕截图:

最后是我的分析器屏幕截图警报:

EN

回答 3

Stack Overflow用户

发布于 2016-10-20 16:01:00

为字段religioncomputedmeaning指定索引

参考In MySQL how to set index to the table?

CREATE INDEX语句用于在表中创建索引。

索引允许数据库应用程序快速查找数据,而无需读取整个表。

票数 0
EN

Stack Overflow用户

发布于 2016-10-20 17:58:20

使用Index肯定会减少查询的运行时间。

但是,您可以尝试执行以下查询。它会给你带来更好的性能。

代码语言:javascript
复制
SELECT 
       n.name,
       n.computedmeaning,
       m.origin,                             
       m.gender,
       m.pronunciation,
       m.similar,
       m.variants
  FROM
       (SELECT * 
          FROM names 
         WHERE computedmeaning IS NOT NULL) n
 INNER JOIN (SELECT * 
               FROM meta 
              WHERE religion='hindu') m ON m.nameid = n.id 
 ORDER BY n.name LIMIT 0 , 30
票数 0
EN

Stack Overflow用户

发布于 2016-10-23 09:14:21

代码语言:javascript
复制
names:  INDEX(name, computedmeaning, id) -- in this order
meta:   INDEX(name_id, religion)     -- in either order

names索引可能会消耗ORDER BY,从而节省排序。它也是“覆盖”,这有助于提高性能。

meta索引对于JOIN应该是有效的。

另请参阅

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

https://stackoverflow.com/questions/40147101

复制
相关文章

相似问题

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