以下のように全件取得して判断するのは時間の無駄。
1 2 |
SELECT * FROM orders WHERE customer_id = 123; SELECT COUNT(*) FROM orders WHERE customer_id = 123; |
以下のように1件でも見つかったら「有り」と判断した方が効率がいい。
1 2 3 |
SELECT * FROM orders WHERE customer_id = 123 LIMIT 1; SELECT TOP(1) FROM orders WHERE customer_id = 123; SELECT EXISTS(SELECT * FROM orders WHERE customer_id = 123) |
参考サイト
SQL小ネタ: 高速なデータの存在チェック – Qiita
https://qiita.com/emotu/items/05892965fccb719cd8d1
MySQL – MySQLのテーブル内に行が存在しているかどうか確認する一番いい方法は?(1281)|teratail
https://teratail.com/questions/1281
COUNT(*)をレコードの存在チェックのために安易に使うべからず|Archive Redo Blog
https://ameblo.jp/archive-redo-blog/entry-10035200905.html