目前,我有以下查询需要较长的时间来执行SQL查询优化:比较相邻行
SELECT * FROM Table t1
WHERE EXISTS
(
SELECT * FROM Table t2
WHERE
(
t1.Key = t2.Key - 1
AND t1.Foo = 1
AND t2.Bar = 0
)
)
的Key
是主键字段。我只比较相邻的行,所以直觉上看,最快的实现方式是比较所有相邻的行,N-1表示。我的查询的工作方式,我认为它可能会比较每行与Table
中的每一行,即采取N * N比较。
有没有更好的方法来编写查询?
'有没有更好的方法来编写查询?'不,它是完美的,典型的DBMS不会执行N * N行 - 比较,而是使用某种合并加入。在这种情况下,问题比选择中的解决方案要好d答案,IMO。 – wildplasser
BTW:请使用理智_metasyntactic_名称;无论是富/酒吧或苹果/橙色或'my_table'或其他。但**不要**命名你的表'表'和你的钥匙'钥匙'。你不会将你的孩子命名为“孩子”,是吗? – wildplasser
我的DBMS似乎没有合并连接。布拉德的回答比这个速度快4倍。 – rwolst