create table if not exists `article`(
`id` INT(10) unsigned NOT NULL primary key auto_increment,
`article_id` INT(10) unsigned NOT NULL,
`category_id` INT(10) unsigned NOT NULL,
`views` INT(10) unsigned NOT NULL,
`comments` INT(10) unsigned NOT NULL,
`title` VARCHAR(255) NOT NULL,
`content` TEXT NOT NULL
)ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
insert into `article` (`article_id`, `category_id`,`views`,`comments`,`title`,`content`) values
(1,1,1,1,'1','1'),
(2,2,2,2,'2','2'),
(3,3,3,3,'3','3');

SELECT id, article_id FROM article WHERE category_id = 1 AND comments > 1 ORDER BY views DESC LIMIT 1;






把comments>1改成=1

性能好了很多。是因为comments>1是范围查询,会截断索引views。
删除索引:drop index idx_article_ccv on article

再建索引
create index idx_article_cv on article(category_id, views)


本文深入探讨了SQL查询性能优化的方法,通过对比不同条件筛选对查询效率的影响,详细讲解了如何合理使用索引以提高数据库查询速度。特别是针对特定条件下的查询优化,提供了实用的策略和案例分析。
792

被折叠的 条评论
为什么被折叠?



