国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > PostgreSQL > 为什么PostgreSQL查询很慢?为什么这些查询没有利用索引?

为什么PostgreSQL查询很慢?为什么这些查询没有利用索引?

postgresql 数据库 索引

头像

2021-01-23 16:06:446924浏览 · 0收藏 · 0评论

banner51.png

并非每个PostgreSQL查询都会自动使用索引,只有在表的大小超过一个最小值,并且查询只会选中表中较小比例的记录时才会采用索引。这是因为索引扫描引起的随即磁盘存取可能比直接地读取表(顺序扫描)更慢。

为了判断是否使用索引,PostgreSQL必须获得有关表的统计值。这些统计值可以使用 VACUUM ANALYZE,或 ANALYZE 获得。 使用统计值,优化器知道表中有多少行,就能够更好地判断是否利用索引。 统计值对确定优化的连接顺序和连接方法也很有用。在表的内容发生变化时,应定期进行统计值的更新收集。
索引通常不用于 ORDER BY 或执行连接。对一个大表的一次顺序扫描,再做一个显式的排序通常比索引扫描要快。
但是,在 LIMIT 和 ORDER BY 结合使用时经常会使用索引,因为这只会返回表的一小部分。 实际上,虽然 MAX() 和 MIN() 并不使用索引,通过对 ORDER BY 和 LLIMIT 使用索引取得值和最小值也是可以的:
SELECT colFROM tabORDER BY col [ DESC ]LIMIT 1;
如果你确信PostgreSQL的优化器使用顺序扫描是不正确的,你可以使用SET enable_seqscan TO 'off' 然后再次运行查询,你就可以看出使用一个索引扫描是否确实要快一些。当使用通配符操作,例如 LIKE 或 ~ 时,索引只能在特定的情况下使用。
比如字符串的开始部分必须是普通字符串,也就是LIKE模式不能以 % 打头。~(正则表达式)模式必须以 ^ 打头。
字符串不能以匹配多个字符的模式类打头,例如 [a-e]。
大小写无关的查找,如ILIKE和 ~* 等不使用索引。
在做 initdb 时必须采用缺省的本地设置Clocale,因为系统不可能知道在非C locale情况时下一个字符是什么。在这种情况下,你可以创建一个特殊的text_pattern_ops索引来用于LIKE的索引。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

疼~好疼~进不去了男男| 善良的公与媳HD中文| 四川少女B站免费入口 | 淘宝情趣记事BY欲晓| 今日看料-今日看料每日更新| 风流夫人免费观看高清电视剧| 老师穿白色双开真丝旗袍怎么穿| 暴躁少女10-16岁| 男生把困困放在女生定眼| 父女一起到达巅峰的小说| 人犬兽人在线观看免费完整一| 小雨和公做爰22章| 真实双人插画的视频| 中国老太太的毛耳耳一| 母与子免费观看大全电视剧| 日本双人xX00吃奶视频| 欧美《禁忌5》| 做爰高潮A片(毛片)| 九·幺 破解版| 成全在线观看免费高清电视剧| 小静被门卫大爷灌满JNG液视...| 海棠书屋免费无弹窗全文阅读| 公交车大肉大捧一进一出好爽| 电影《法国空姐2》| 美女打屁股| 朋友的妈妈7中字谜| 亚洲AV成人片无码WWW| 做爰高潮A片(毛片)| 坤坤赛进桃子里在线看歌词| 《睡眠指导1-6集》| 亚洲人成色777777在线播放| 妈妈叫我戴上避孕套是什么歌| 少妇激情偷公乱140章| 变态| 美女两个球球抖动抓球球视频 | 12338是什么电话| 女人高潮后要禁欲多久才能恢复| 蜜桃网站| 厨房肉欲(H)冰块| 法国伦理巜公共汽车| 妈妈醉酒后把我当爸爸电视剧