SQL语句改成这样试一下:select sun(a.XXX * B.XXX)
from D_KHXX d,a,b,c
where c.客户记录号 = d.客户记录号 and
d.标志 = 'P' and
a.XXX = '参数' and
a.XXX = b.XXX and
a.XXX = c.XXX
from D_KHXX d,a,b,c
where c.客户记录号 = d.客户记录号 and
d.标志 = 'P' and
a.XXX = '参数' and
a.XXX = b.XXX and
a.XXX = c.XXX
from D_KHXX d,a,b,c
where d.标志 = 'P' and
d.客户记录号 = c.客户记录号 and
a.XXX = '参数' and
a.XXX = b.XXX and
a.XXX = c.XXX
如果把a.XXX = '参数' 放在最前面,a表满足的可能只有2万条。我的思路是先计算a.XXX = '参数',符合该条件的记录少,然后再与大记录表D_KHXX关联。 这两种的方式本质区别是什么? 有什么直接的性能影响??
select sun(a.XXX * B.XXX)
from a,b,c,D_KHXX d
where a.XXX = b.XXX and
b.XXX = c.XXX and
a.XXX = '参数' and
c.客户记录号 = d.客户记录号 and
d.标志 = 'P'
先从关联的表里缩小查找范围再查找需要的数据。
考虑对A表与B表关联的字段建索引,可以有效的提高查询速度!
a表和b表关联的复合primary key,所以应该不用建索引吧 ?
如果先进行关联的话,数据量也很大啊。
可不可以先用参数条件减少记录数,再减少表之间的关联??如:
where a.xxx = '参数' and
a.xxx = b.xxx and
b.xxx = c.xxxx and
c.xxx = d.xxx and
d.标志 = 'P' 现在查询慢的主要原因是d表的庞大的记录数和字段数(虽然我的查询中只需要两列而已).
把大表d_khxx作为驱动表?? 20万条记录啊,为什么呢?