none
关于in查询 RRS feed

  • 问题

  •     where XXX in (....),如果用in查询时,括号中的参数很多,甚至几百个对tempdb是否有压力,这种查询是不是需要改成临时表的方式?
    2012年11月20日 7:18

答案

  • 建议用 临时表或表变量

    这种 in 是一堆 or 条件, sql 查询优化器处理这个比较弱的

    一般不会对 tempdb 造成什么负担, 不过执行计划通常比较差一些

    2012年11月20日 9:21
  • 如果很多参数的话,一般原则是建议使用临时表。

    显著的区别是:in 生成的执行计划基本都是表扫表,而临时表可以建适当的INDEX,从而给了关系引擎优化的余地,具体的你要自己测试。

    当然,使用什么不是重点,重点是你要了解为什么哪个比哪个好。


    Please click the Mark as Answer button if a post solves your problem!

    2012年11月20日 10:35

全部回复

  • 建议用 临时表或表变量

    这种 in 是一堆 or 条件, sql 查询优化器处理这个比较弱的

    一般不会对 tempdb 造成什么负担, 不过执行计划通常比较差一些

    2012年11月20日 9:21
  • 如果很多参数的话,一般原则是建议使用临时表。

    显著的区别是:in 生成的执行计划基本都是表扫表,而临时表可以建适当的INDEX,从而给了关系引擎优化的余地,具体的你要自己测试。

    当然,使用什么不是重点,重点是你要了解为什么哪个比哪个好。


    Please click the Mark as Answer button if a post solves your problem!

    2012年11月20日 10:35
  • 关注一下

    给我写信: QQ我:点击这里给我发消息

    2012年11月20日 12:51