PostgreSQLのパフォーマンス改善をしていて、レコードの存在チェックをするSQLの検証をした結果、Count()、Count()+limit1、Any() の3パターンで最も高速でDB負荷が低かったのは Any()だった。
下記は、SQL実行時間の比較結果。
検証した際のSQLはこちら。
1 2 3 4 5 6 7 8 9 10 |
--Count(*) SELECT Count(*) as cnt FROM schemaA.tableA WHERE columnA = ANY (array['value1']); --Count(*)+limit1 SELECT Count(*) as cnt FROM schemaA.tableA WHERE columnA = ANY (array['value1']) limit 1; --Any() SELECT columnA = ANY (array['value1']) FROM schemaA.tableA where columnA = ANY (array['value1']); |
コメント