请教PostgreSQL高手,一个limit问题。

luogbcn 2008-04-26 10:08:30
表test2

CREATE TABLE test2
(
"ItemID" character(32) NOT NULL,
"Price" numeric(10,2),
CONSTRAINT test2_pkey1 PRIMARY KEY ("ItemID")
)
WITH (OIDS=FALSE);

并且以Price字段创建了索引:

CREATE INDEX "idx_test2_Price"
ON test2
USING btree
("Price");

test2表有120万条数据,执行以下语句:
select "ItemID" from test2 where "ItemID" in
(
'1abcdef0000000000000000111111111',
'1abcdef00000000abde0000111113115',
'1abcdef0000000000000000111111111',
'1abcdef00000000abde0000111113115',
'1abcdef0000000000000000111111111',
'1abcdef00000000abde0000111113115',.....-- >此处数据为12000个"ItemID"组成的字符串;
)
limit 20;

查询执行需要耗时 241340ms;如果换成 limit149,也是23578ms;
但是如果把limit 20 换成limit 150 就仅仅需要743ms;!!!!!!!!!!!!

请教高手,这是怎么回事,怎么处理这个问题,
急急急!!!!!!!!!
急急急!!!!!!!!!
急急急!!!!!!!!!




...全文
439 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
luogbcn 2008-04-29
  • 打赏
  • 举报
回复
没有人知道???
luogbcn 2008-04-26
  • 打赏
  • 举报
回复
怎么没有人回复?

再在SQL语句中加入order by "Price";
select "ItemID" from test2 where "ItemID" in
('1goe87ad56728e7bbb3f07380d6c5bb6',
'1goc3fe40189b0679b913d0cd3690b73',
'1go758660522cd394d7b2823486baf59',
'1go192cd4a56490dcd803ca81297907e',
'1go65a1714e2f585240775664888d2a3',
'1goc91bb1adba1af14c9d9757959b693',
'1go625c4e4b71c959c8abb32bbcd9f05',
'1god1d89d4c7a040fb13cd1a42ce0064',
'1go18403976ab3eeae447870e243bc3b',
'1goa5ceaa5707d0c175f9faf73dba700',
'1go3b039ce79d39fcbd2f5eec1144e7d',
'1go691949fbe83ce189c60dcecd6e1f4',.....-- >此处数据为12000个"ItemID"组成的字符串;
)
order by "Price"

limit 20;

结果依然是23768ms!!!

但我如果删除索引idx_test2_Price 的话,
无论选择limit 20 ,limit 149 ,limit 150 ...
速度都很快,就3XXms~5XXms;

难道postgreSQL索引有什么问题吗??????
高手帮我想象办法啊,急啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



luogbcn 2008-04-26
  • 打赏
  • 举报
回复

更正一下刚才的SQL语句;

select "ItemID" from test2 where "ItemID" in
('1goe87ad56728e7bbb3f07380d6c5bb6',
'1goc3fe40189b0679b913d0cd3690b73',
'1go758660522cd394d7b2823486baf59',
'1go192cd4a56490dcd803ca81297907e',
'1go65a1714e2f585240775664888d2a3',
'1goc91bb1adba1af14c9d9757959b693',
'1go625c4e4b71c959c8abb32bbcd9f05',
'1god1d89d4c7a040fb13cd1a42ce0064',
'1go18403976ab3eeae447870e243bc3b',
'1goa5ceaa5707d0c175f9faf73dba700',
'1go3b039ce79d39fcbd2f5eec1144e7d',
'1go691949fbe83ce189c60dcecd6e1f4',.....-- >此处数据为12000个"ItemID"组成的字符串;
)
limit 20;

952

社区成员

发帖
与我相关
我的任务
社区描述
PostgreSQL相关内容讨论
sql数据库数据库架构 技术论坛(原bbs)
社区管理员
  • PostgreSQL社区
  • yang_z_1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧