这是创建基本SELECT查询的更具成本效益的方法。 方案一:
SELECT id
FROM table
WHERE COL0 NOT IN (2,3,4,5,6,7,8,9...)
AND COL1 >= 20
AND COL2 <= 10
AND .... ;
或选项二:
SELECT id FROM table WHERE COL0 NOT IN (2,3,4,5,6,7,8,9...);
COL0是FK列。
首先需要的是COL0上的索引。但是从那里......
问题:
我使用的是Firebird 2.5。
答案 0 :(得分:2)
db查询优化器将使用最佳索引来过滤最多行。
所以你应该先使用aproach并添加:
所以想象你有1000行,但只有10行col1
优化器将使用NOT IN
索引来过滤990行,使查询的其余部分更快。
您也可以将这些值保存在单独的表tblFilter
SELECT id
FROM table T1
LEFT JOIN tblFilter T2
ON T2.col0 = T2.col0
WHERE T2.col0 IS NULL
。
UIView