美文网首页
postgresSQL索引(四)--索引和order by

postgresSQL索引(四)--索引和order by

作者: 飞行员舒克_ed03 | 来源:发表于2019-01-01 19:52 被阅读0次

oder by是用于sql排序的语句。
order by查询中加入索引可以不用单独执行排序,而得到正确的排序,原因在于在执行查询是,索引按照特定的顺序查询,从而避免了单调的一次查询的开销。
在所有的索引类别中,postgresSQL只有B-tree索引支持能按序生成行,其他索引返回无序的结果,然后执行单独的排序。
但是如果查询表的很大部分数据,单独的排序很可能比运用索引快,因为结果无序的时候,是按照硬盘中存储的顺序查询,这样可以减少硬盘的访问,还记得第一篇的内容吗?索引只有在大数据获取少量数据的时候非常有效。一个重要情况是ORDER BY 组合 LIMIT n:单独索引只会操作识别的前n行数据,如果加上索引的话,前n行可以直接获取,而不扫描其余的内容。

思考一下:很多需要按时间排序的分页查询是不是符合这种场景。

建立索引可以指定索引的顺序

CREATE INDEX test_idx ON test (id DESC NULLS LAST);

在单列索引中定义索引的排序作用不是很明显,但是在多列索引中效果就不一样了。例如2列的组合索引ON (x,y)我们能满足ORDER BY x,y 或者ORDER BY x DESC, ORDER BY y DESC,但是如果我们经常查询的条件是 ORDER BY x ASC, y DESC,这就没办法利用索引的优势了,但是如果索引定义为 (x ASC, y DESC) 或者(x DESC, y ASC)那么效率就会大大提高了。

综上,特别指定索引顺序的索引,对特定的排序有非常大的作用。

相关文章

  • postgresSQL索引(四)--索引和order by

    oder by是用于sql排序的语句。order by查询中加入索引可以不用单独执行排序,而得到正确的排序,原因在...

  • mysql order by 排序

    mysql order by 排序 索引排序 参考 order by 字段上上有索引可能就会用上索引排序,是否应用...

  • order by 和 索引

    1、 order by 排序字段和索引 2、 order by 排序字段对其他字段索引的影响 3、 mysql是怎...

  • QueryProcessing_INDEX

    聚合(聚集)索引____非聚合(聚集)索引 聚合(聚集)索引____Order ofdata recordsis ...

  • MySQL ORDER BY是如何执行的

    本文问题 order by是否可以使用索引,在什么情况下使用索引? 在哪些情况下,order by无法使用索引执行...

  • mysql

    一 mysql基础 二 mysql索引 什么是索引 索引是一种数据结构,解决查询语句中where和order by...

  • Elasticsearch 教程-精确查询(1)-数据准备

    1. 创建索引及类型 索引名:order 类型名:order 创建脚本: ES 5.*之后,把string字段设置...

  • 58-MySQL索引优化与查询优化-ORDER BY和GROUP

    一、排序优化(ORDER BY) 1、在WHERE条件字段上加索引,但是为什么在ORDER BY字段上还要加索引?...

  • Geomesa学习2 - 索引机制

    GeoMesa一共有两大类索引,分别是普通属性索引、时空索引。 Geomesa时空索引使用了基于Z-order填充...

  • MySQL(二)MySQL索引原理

    1. 索引类型 索引可以提升查询速度,会影响where查询,以及order by排序。MySQL索引类型如下: 从...

网友评论

      本文标题:postgresSQL索引(四)--索引和order by

      本文链接:https://www.haomeiwen.com/subject/xmfnlqtx.html