to cenlmmx(学海无涯苦作舟) 首先这900多个项目是存在于内存中,不是文件,sqlloader不能用 其次900多个项目就意味着执行 900多次的insert操作 加上 建立临时表的时间 加上 连接查询的时间真的会比 in(900多个项目)花费时间短吗?总觉得不大可能呢 如 //建立临时表 create Temp Table tableTemp; for(int i=0; i<900; i++) { insert tableTemp values (项目值i) } select ** from a, tableTemp where a.key = tableTemp.key//in方式查询 select ** from a where key in(项目值1,项目值2.......项目值900)上面两个哪一个更快?
select ** from a, tableTemp where a.key = tableTemp.key 方式效率高,Temp 表的数据量越大越明显,(为提高效率,将Temp表中的key设置为主键或索引)。不得不用in的情况下,in后面sql中加上order by,效果“大多数”(不是绝对的)情况下也会提高一些。
怎么都不看看问题 我当然知道select ** from a, tableTemp where a.key = tableTemp.key 方式效率高了那不是得把数据先做insert操作麻 insert就不算时间啊 清仔细看看问题再回答
请问诸位 select ** from 两个* 是什么用法呀,我本以为笔误,但发现好几个人都这么用,好奇
select * from table1 where item1 in ( select name from temp_table );
应该说很快的速度 这样的查询
from table1,temp_table
where table1.item1 = temp_table.name
感觉把900多个项目做insert操作,再加上表连接检索。加起来比 in(900多个项目)更费时间呢?
先把900个用sqlloader插入一个临时用的表,要得了多久呢.
首先这900多个项目是存在于内存中,不是文件,sqlloader不能用
其次900多个项目就意味着执行 900多次的insert操作 加上 建立临时表的时间 加上 连接查询的时间真的会比 in(900多个项目)花费时间短吗?总觉得不大可能呢
如
//建立临时表
create Temp Table tableTemp;
for(int i=0; i<900; i++) {
insert tableTemp values (项目值i)
}
select ** from a, tableTemp where a.key = tableTemp.key//in方式查询
select ** from a where key in(项目值1,项目值2.......项目值900)上面两个哪一个更快?
方式效率高,Temp 表的数据量越大越明显,(为提高效率,将Temp表中的key设置为主键或索引)。不得不用in的情况下,in后面sql中加上order by,效果“大多数”(不是绝对的)情况下也会提高一些。
我当然知道select ** from a, tableTemp where a.key = tableTemp.key
方式效率高了那不是得把数据先做insert操作麻
insert就不算时间啊
清仔细看看问题再回答
好像没有两个*用法,大概是代码Copy造成的:)