最后查询出的结果一样吗?如果不一样的话: 可能记录值不一样,也影响查询速度 比如你查询条件中: where 条件1,条件2,f1>10 如果A表中f1>10的记录比较少,而B表中的比较多,则很可能查询B表需要的时间更长最好能把语句贴出来看看
我现在把问题详细讲一下: 最初我对表A进行查询,查询语句为: SELECT A.* FROM A WHERE A.RECEIVER = '60269' AND (A.FLAG = '0') 这时查询速度比较慢.如果把查询条件中 AND (A.FLAG = '0') 去掉,查询速度就快了. 于是我新建了一张表B,建表语句为: CREATE TABLE B AS SELECT A.* FROM A WHERE A.FLAG = '0'. 这时我对表B进行查询,查询语句为: SELECT B.* FROM B WHERE A.RECEIVER = '60269' 按我的理解是查询速度应该比 SELECT A.* FROM A WHERE A.RECEIVER = '60269' 查询速度速度快,结果却相反.
可能记录值不一样,也影响查询速度
比如你查询条件中:
where 条件1,条件2,f1>10
如果A表中f1>10的记录比较少,而B表中的比较多,则很可能查询B表需要的时间更长最好能把语句贴出来看看
最初我对表A进行查询,查询语句为:
SELECT A.* FROM A WHERE A.RECEIVER = '60269' AND (A.FLAG = '0')
这时查询速度比较慢.如果把查询条件中 AND (A.FLAG = '0') 去掉,查询速度就快了.
于是我新建了一张表B,建表语句为:
CREATE TABLE B AS SELECT A.* FROM A WHERE A.FLAG = '0'.
这时我对表B进行查询,查询语句为:
SELECT B.* FROM B WHERE A.RECEIVER = '60269'
按我的理解是查询速度应该比 SELECT A.* FROM A WHERE A.RECEIVER = '60269'
查询速度速度快,结果却相反.
主键就有索引嘛.
而你用CREATE TABLE B AS SELECT A.* FROM A WHERE A.FLAG = '0'.
这样的语句 建立 出来的table是没有主键. 也没有索引的.
当然查表B会慢一些了.
最好能看到分析计划。