国产成人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的索引。

关注

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

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

高桥由美子| 人口兽猪马狗第1集| 暴躁老妈高清免费观看电视剧 | 100%透光裸妆| 器材室轮-J-(4)对着镜子| 阴部按摩出水太尴尬怎么办 | 旅游换伴交流故事100篇| 《被夫の上司持久侵犯》| 淑芬两腿间又痒又疼的原因 | 免费观看已满十八岁电视剧直播 | 中中漫画免费漫画弹窗入口| WWW.1688.COM麻豆.| BOBO浏览器老司机模式改版特..| 星空传媒天美传媒有限公司| 公憩止痒小说原著叫什么名字| 白丝脚上的浓浓的精华液能用吗| 《性88分钟》| 亚洲AV天堂久久精品9966| 欧美叔叔别撩我免费观看电视剧| 女子蹲坑排尿全过程| 欧美XBOX与IPHONE| 《男医生的特殊治疗》| 成人猫咪最新地域网名是什么啥| 坤坤寒入桃子里电视剧| EXO妈妈MV高清在线观看| 阿塞拜疆| 《互换人妻HD中字》| 蜜汁肉桃的简介| 两个男人睡一个女人什么心理呢 | 麻花传媒的短视频制作技巧和方法| 舒淇与黑人性猛交| 宝贝~腿开大点我添添| 混合交换5HD| 爸爸吃女儿奶奶高情商回复| 性XXXX裸体xXXX| 男生和老师一起差差差的游戏| 半推半就干朋友老婆下一句怎么接| 在电影院被强了好爽H| 九九在线观看免费播放大全电视剧| 雨后故事| 轮流和两个男人一起很容易染病吗