我有一个针对可以增长到数百万行的表执行的查询。查询来自我们使用的 QA 工具,它超出了数据库的标准功能(就索引的内容以及索引方式和原因而言)。查询是:
SELECT id FROM thisTable t
WHERE col = 'val'
AND ((not exists (SELECT 1 FROM thisTable WHERE refid = t.id) and refbool = 0) or refbool = 1)
ORDER BY newid()
Run Code Online (Sandbox Code Playgroud)
基本上,假设表中有id,refid,refbool,和col列。所以你可以有如下数据:
id | refid | refbool | col
------------------------------------
1 | NULL | 0 | val
2 | NULL | 0 | val
3 | NULL | 0 | val
4 | 2 | 1 | val
5 …Run Code Online (Sandbox Code Playgroud)