作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个看起来像这样的模式:
create table image_tags (
image_tag_id serial primary key,
image_id int not null
);
create index on image_tags(image_id);
当我执行包含两列的查询时,速度慢得离谱(例如,select * from image_tags order by image_id desc, image_tag_id desc limit 10;
)。如果我在排序中删除其中一列(哪个无关紧要),它会非常快。
我在两个查询中都使用了 explain
,但它并没有帮助我理解为什么 order by
子句中的两列如此缓慢,它只是告诉我有多少使用两列速度较慢。
最佳答案
要通过索引优化order by image_id desc, image_tag_id desc
排序,您需要有这个索引:
create index image_tags_id_tag on image_tags(image_id, image_tag_id);
只有一个复合索引(我认为几乎没有异常(exception),但在这种情况下不是)将有助于优化器使用它来立即确定顺序。
关于sql - 两列的 ORDER BY 比两列的 ORDER BY 慢得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26092250/
我是一名优秀的程序员,十分优秀!