我现在把问题详细讲一下: 表A中有20多万条记录,表A进行查询,查询语句为: SELECT A.* FROM A WHERE A.RECEIVER = '60269' AND (A.FLAG = '0') 这时查询速度比较慢,大约需要1.5秒种.如果把查询条件中 AND (A.FLAG = '0') 去掉,查询速度就快了,大约只需0.2秒. 于是我新建了一张表B,建表语句为: CREATE TABLE B AS SELECT A.* FROM A WHERE A.FLAG = '0'. 这时表B中有8万条记录。对表B进行查询,查询语句为: SELECT B.* FROM B WHERE A.RECEIVER = '60269' ,查询时间大约需0.5秒。 按我的理解是查询速度应该比 SELECT A.* FROM A WHERE A.RECEIVER = '60269' 查询速度速度快,结果却相反.
我现在把问题详细讲一下:
表A中有20多万条记录,表A进行查询,查询语句为:
SELECT A.* FROM A WHERE A.RECEIVER = '60269' AND (A.FLAG = '0')
这时查询速度比较慢,大约需要1.5秒种.如果把查询条件中 AND (A.FLAG = '0') 去掉,查询速度就快了,大约只需0.2秒.
于是我新建了一张表B,建表语句为:
CREATE TABLE B AS SELECT A.* FROM A WHERE A.FLAG = '0'.
这时表B中有8万条记录。对表B进行查询,查询语句为:
SELECT B.* FROM B WHERE A.RECEIVER = '60269' ,查询时间大约需0.5秒。
按我的理解是查询速度应该比 SELECT A.* FROM A WHERE A.RECEIVER = '60269'
查询速度速度快,结果却相反.
可能的原因是由于索引的使用所引起的