以下查詢的執行速度顯着不同。第二個比第一個快幾個數量級。HSQLDB中的SQL INNER JOIN自動優化
SELECT * FROM A INNER JOIN B ON A.X=B.Y WHERE B.Z=1
SELECT * FROM A INNER JOIN (SELECT * FROM B) ON A.X=B.Y WHERE B.Z=1
如果有人會寫這是爲什麼,這將是偉大的。 該數據庫是HSQLDB
與JDBC
。
附加信息:版本HSQLDB
是2.3.2。列A.X被索引,但列B.Y不是。
你可以測試第三個版本:'選擇*從內部連接B上A.X = B.Y和B.Z = 1'? – 2014-09-30 14:24:40
@JoëlSalamin這與第一個緩慢版本的執行時間差不多。 – user3726374 2014-09-30 14:28:36
這可能是由於'B.Y'沒有編入索引。你可以試試這個其他版本,並告訴我是否有性能增益/損失:'SELECT * FROM A IN JOIN(SELECT * FROM B WHERE BZ = 1)ON AX = BY' – 2014-09-30 15:32:14