我发现自己陷入了困境。我有只有一列(抑制或包含列表)的表,它们或多或少是 varchar(25),但问题是我没有时间在主查询中使用它们之前对它们进行索引,并且取决于它的重要性,我不知道每个表中有多少行。所有这一切的核心基础表是大约 140 万行和大约 50 列。
我的假设如下:
IN 不应该用于返回大量值(行)的情况,因为它看起来是连续的,对吧?(子查询上的 IN 没有直接传递值)
连接(INNER 用于包含和 LEFT 并在抑制时检查 Null)最适合大型数据集(超过 1k 行左右)
EXISTS 一直让我担心,因为它似乎在为每一行做一个子查询(全部 140 万?哎呀。)
我的直觉说,如果可行,请获取抑制表的计数并使用 IN(对于 1k 行以下)和 INNER/LEFT 连接(对于 1k 行以上的抑制表)注意,我将要抑制的字段将是大基表,但抑制表不会。想法?
提前感谢您的任何和所有评论和/或建议。