有个问题,请教各位高手。
表
CREATE TABLE OperationAllowed
(
groupId int,
metadataId int,
operationId int,
primary key(groupId,metadataId,operationId),
foreign key(groupId) references Groups(id),
foreign key(metadataId) references Metadata(id),
foreign key(operationId) references Operations(id)
);
其中groupId, metadataId, operationId分别是Group, Metadata, Operation这三个表的primary key.
其中Group有3条记录, Operation也是3条,Metadata大概有26万条记录。
当前Operaionallowed表的数据量有225万条。
有如下语句:
"SELECT groupId, operationId FROM OperationAllowed WHERE metadataId = " + id + " ORDER BY operationId"
返回结果正常情况下只有9条记录。
可为什么这个select语句的执行时间却高达300ms呢?而在Metadata表里(26万条记录),做一个select语句不到1ms.
差距怎么这么大呢?
如何优化这个OperationAllowed表?数据库平台:PostgreSQL 8.3.
表
CREATE TABLE OperationAllowed
(
groupId int,
metadataId int,
operationId int,
primary key(groupId,metadataId,operationId),
foreign key(groupId) references Groups(id),
foreign key(metadataId) references Metadata(id),
foreign key(operationId) references Operations(id)
);
其中groupId, metadataId, operationId分别是Group, Metadata, Operation这三个表的primary key.
其中Group有3条记录, Operation也是3条,Metadata大概有26万条记录。
当前Operaionallowed表的数据量有225万条。
有如下语句:
"SELECT groupId, operationId FROM OperationAllowed WHERE metadataId = " + id + " ORDER BY operationId"
返回结果正常情况下只有9条记录。
可为什么这个select语句的执行时间却高达300ms呢?而在Metadata表里(26万条记录),做一个select语句不到1ms.
差距怎么这么大呢?
如何优化这个OperationAllowed表?数据库平台:PostgreSQL 8.3.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货