------解决方法--------------------------------------------------------?
第一步: 根据输入取ID;
第二步:根据ID 取内容;
我写了2条SQL语句,他们执行速度相差10多倍,不知道什么原因,请教大家下:
大致过程如下
tableID: 根据输入条件,得到ID,我把它作为一张临时表;
tableContex:根据输入条件,得到Context,这儿我也把它最为一 张临时表;
根据tableID.id=tableContex.id 获取最终的结果;
方法一:
select cont(*) from
( select id from table0 ) as tableID;
( select * from tableContex ) as tableContex
where tableID.id=tableContex.id
方法二:
select count(*) from
( select id from table1
union select id from table2
union select id from table3
) as tableID;
( select tableContex.* from tableContex ) as tableContex
where tableID.id=tableContex.id
两种方法差别主要在第一步:
第一种方法是直接根据输入条件一步找出ID;
第二种方法是根据输入条件 先找出子对象,在根据子对象找出ID,最后再把结果合并。
为什么这两种方法差别这么大?
谁能解释下,SQL语句很长,我这儿把它简化,不知道大家能否明白我说的意思
------SQL语句优化 解决方法--------------------------------------------------------
select id from table1
union select id from table2
union select id from table3
这里已经把三个表遍历了几次,union把重复的删除了,然后再( select tableContex.* from tableContex ) 连接。肯定会慢。