Postgre SQL   发布时间:2022-05-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么PostgreSQL没有在小表上使用我的索引?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在postgresql中有以下表格:
create table index_test
(
    ID int PRIMary KEY NOT NulL,text varchar(2048) NOT NulL,last_modifIEd timestamp NOT NulL,value int,item_type varchar(2046)
);
CREATE INDEX IDx_index_type ON index_test ( item_type );
CREATE INDEX IDx_index_value ON index_test ( value )

@R_498_10673@下选择:

explain SELEct * from index_test r where r.item_type='B';
explain SELEct r.value from index_test r where r.value=56;

执行计划的解释如下:

Seq Scan on index_test r  (cost=0.00..1.04 rows=1 wIDth=1576)
    Filter: ((item_typE)::text = 'B'::text)'

据我了解,这是一个全表扫描.问题是:为什么我的索引没有被使用?

可能是,原因是我桌上的行数太少了?我只有20个.你能不能给我一个sql语句,用随机数据轻松填充我的表来检查索引问题?

我发现这篇文章:http://it.toolbox.com/blogs/db2luw/how-to-easily-populate-a-table-with-random-data-7888,但它对我不起作用.声明的效率无关紧要,只有简单.

是.对于表中的总共20行,seq扫描总是比索引扫描更快.有可能这些行无论如何都位于单个数据库块中,因此seq扫描只需要一个I / O操作.

如果你使用

explain (analyze true,verbose true,buffers truE) SELEct ....

你可以看到更多关于真实情况的细节.

便说一句:你不应该使用文本作为列名,因为它也是Postgres中的数据类型(因此也是保留字).

大佬总结

以上是大佬教程为你收集整理的为什么PostgreSQL没有在小表上使用我的索引?全部内容,希望文章能够帮你解决为什么PostgreSQL没有在小表上使用我的索引?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: