SQL:如何直接将in语句后的列表项直接导入新的表中(100分)

  • 主题发起人 主题发起人 ChenBoy
  • 开始时间 开始时间
C

ChenBoy

Unregistered / Unconfirmed
GUEST, unregistred user!
比如:<br>总表(号码,状态)<br>号码 &nbsp; &nbsp;状态<br>4000 &nbsp; &nbsp; 0<br>4001 &nbsp; &nbsp; 1<br>4002 &nbsp; &nbsp; 1<br>4005 &nbsp; &nbsp; 1<br>4008 &nbsp; &nbsp; 0<br>4009 &nbsp; &nbsp; 3<br>4010 &nbsp; &nbsp; 5<br>我的想法:<br>select 号码 from 总表 where 号码 in (4000,4001) into temp 号码表<br>形成只有in语句后列表中的内容,产生新表,而总表由于记录数太多导致上面的SQL命令执行太慢.<br>结果:<br>号码表:<br>号码<br>4000<br>4001<br><br><br>大家有没有其他发的办法,速度更快一点的,谢谢!
 
如果在号码列上有索引,那么可以利用BETWEEN进行加速——IN操作符会导致与集合元素<br>逐个比较,效率远比BETWEEN要低。如果还没建索引的话——那就赶紧建啊!否则,无论是<br>IN、BETWEEN还是=,都将导致全表扫描...<br><br>btw: SQL Server中,以#开头的临时表不是永久表,如果只是用来临时过渡计算,那么into<br>到这种临时表中的效率会非常高(一般不会显式的占用磁盘空间)。
 
还是用索引吧,看看SQL的索引用法,
 
后退
顶部