模拟海量数据查询的优化方法
1.现table有记录一千五百万条以上(测试数据,实际数据量更大).含有province(省份),city(城市)字段,并以这两个字段进行查询(在这两个字段上已建非聚集索引) 
 2.当前优化方法,将table分成5个表table1..table5,每表300万条记录,在province(省份),city(城市)字段上建立非聚集索引 
 3.查询符合省份为 "广东省 "的记录一万四千条,数据库已在高级中设置并行数为64 
 执行    
 select   *   from   table   where   province   =    '广东省 '   --影响行数14000条   耗时3   秒    
 执行 
 select   *   from   table1   where   province   =    '广东省 '   union   all 
 select   *   from   table2   where   province   =    '广东省 '   union   all 
 select   *   from   table3   where   province   =    '广东省 '   union   all 
 select   *   from   table4   where   province   =    '广东省 '   union   all 
 select   *   from   table5    
 --影响行数14000条   耗时26   秒    
 执行 
 select   *   from   table1   where   province   =    '广东省 '   --影响行数14000条   耗时20   秒      
 问题: 
 1.为什么查询三百万条记录(table1)中的14000条在一千五百万条记录(table)中查询14000条要慢(两表中province中带有同样的索引) 
 2.是否采用union   all方法会有问题,如不用union   all   该用什么方式 
 3.拆表时分区是根据地区进行分区,table1中包括广东省,河南省,河北省table2中包括江西省,福建省...分区时是否合理 
 4.因为是按照province及city进行查询,所以没有想采取分区视图,因为分区键中check列只能有一列,是否还有其它的优化方法.
------解决方案--------------------select * from table where province =  '广东省 ' --影响行数14000条 耗时3 秒  
 select * from table1 where province =  '广东省 ' --影响行数14000条 耗时20 秒      
 这个是同样的环境和同样的结构下查询的结果吗? 多查询几次的结果一样吗? 它们的执行计划有差异吗?   
 理论上应该不会有些情况出现才对.
------解决方案--------------------1.跟自增列沒有關系