我有一个执行类似以下操作的查询:
SELECT FieldX, FieldY FROM A
WHERE FieldW IN (108, 109, 113, 138, 146, 160,
307, 314, 370, 371, 441, 454 ,457, 458, 479, 480,
485, 488, 490, 492, 519, 523, 525, 534, 539, 543,
546, 547, 550, 564, 573, 629, 642, 643, 649, 650,
651, 694, 698, 699, 761, 762, 768, 772, 773, 774,
775, 778, 784, 843, 844, 848, 851, 852, 853, 854,
855, 856, 857, 858, 859, 860, 861, 862, 863, 864,
865, 868, 869, 871, 872, 873, 891)
有这么多选项的IN子句是否会影响查询性能?我的应用程序经常出现超时问题,我认为这可能是问题的来源。在不删除数字的情况下,我能否通过使用任何好的SQL提示来优化查询?编辑:@KM 这些是不同表格中的键。这是一个论坛应用程序,简要解释一下:C#从数据库中获取所有论坛并将其存储在应用程序高速缓存中。在C#调用获取这些论坛和此用户的线程的过程之前,C#会进行一些逻辑过滤“所有论坛”集合,考虑权限和一些业务逻辑。超时发生在数据库上,而不是应用程序本身。在查询中执行所有这些逻辑将需要大量的内部连接,我不能百分之百确定我能否在过程内执行所有这些逻辑。
我正在使用SQL Server 2000。