当前位置:  开发笔记 > 编程语言 > 正文

给定主键选择大量行

如何解决《给定主键选择大量行》经验,为你挑选了1个好方法。

我需要从一个更大的表中选择大量的行,这些表是在自动增量标识列上键入的.我有我想要选择的每一行的主键值,但它可能非常大.

通常但并非总是,所选择的行是连续的,因此我实现了一种机制,将select转换为一组范围子句,用于所有聚集在一起的条目([PrimaryKey] BETWEEN 151 AND 217),以及一个回退方法,用IN子句选择所有隔离的条目.

最后我得到了这样的东西

SELECT * FROM Table WHERE ([PrimaryKey] BETWEEN 151 AND 217) OR ([PrimaryKey] BETWEEN 314 AND 378) OR ...
OR [PrimaryKey] IN (1,3,7,14,147...)

这适用于我主要使用大范围的情况,但随着查询变大而崩溃.我只是遇到了一个退化的案例,我有大量的"对"条目,在我放弃它之前,每次尝试描述执行计划的时间超过15分钟,为2个条目生成BETWEEN语句.

我想到的第一件事就是我可以改变开始生成范围的阈值,而不是个别值,超过2(10或许10?),但我想知道是否有更好的解决方案.



1> Otávio Décio..:

使用要选择的值创建Temp表,并执行从主表到临时表的连接.这样你几乎没有限制.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有