mysql - 不确定发生了什么的繁重查询

标签 mysql sql ruby-on-rails database

我有一个像这样的 SQL 查询,它需要大量的加载......

不确定这里发生了什么......如果有人可以帮助我。

SELECT  `posts`.* FROM `posts`  
WHERE `posts`.`type` 
IN ('MySubDomainSitePost') 
AND `posts`.`aasm_state` = 'published' 
AND (published_at <= '2015-05-12 01:01:01') 
AND `posts`.`on_frontpage` = 1
AND `posts`.`is_pinned` = 0 
ORDER BY published_at DESC LIMIT 16  

最佳答案

您需要使用explain select 检查查询性能。现在对于大型数据集,如果列没有索引,查询将执行得非常差。

根据给定的查询,您可能需要添加以下索引

alter table posts 
add index p_search_idx(type,aasm_state,published_at,on_frontpage,is_pinned);

这将提高查询速度。

确保在应用索引之前对表进行备份。

并且无需在查询中使用 IN 就可以了

SELECT  `posts`.* FROM `posts`  
WHERE `posts`.`type` = 'MySubDomainSitePost' 
AND `posts`.`aasm_state` = 'published' 
AND (published_at <= '2015-05-12 01:01:01') 
AND `posts`.`on_frontpage` = 1
AND `posts`.`is_pinned` = 0 
ORDER BY published_at DESC LIMIT 16  

关于mysql - 不确定发生了什么的繁重查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30207813/

相关文章:

sql - 将表重命名为 sp_help 并且无法将其重命名回来

MySQL 按其他表中的值排序

php - 动态下拉列表第二个列表未填充

sql - 查找 GROUP BY 查询中的最高 COUNT

ruby-on-rails - Rspec:测试 CSV 输出中的行数

ruby-on-rails - 如何比较 ruby​​ 应用程序中的任何文件

ruby-on-rails - Windows 版 Ruby on Rails 2.0 入门

MySQL 查询计算唯一列的行数

php - 从 mysql 获取数组 while

sql - 汇总子树中数据的查询?