SQLは「存在」かどうかを判断し、countでまだ操作していますか?時間がかかります
1212 ワード
ある条件でデータベーステーブルから「あります」と「ありません」を調べたら、二つの状態しかありません。なぜSQLを書く時に、select count(*)が必要ですか?
道に入ったばかりのプログラマーであろうと、立派な砂場の長年のプログラマーであろうと、いつもと同じcountです。
現在の多くの人の書き方
何回かreviewコードを作った時、現在のような現象を発見しました。
業務コードの中で、一つ以上の条件によって、記録があるかどうかを調べて、どれぐらいの記録があるかに関心を持たない必要があります。一般的なSQLとコードの書き方は以下の通りです。
SQLの書き方:
方案を最適化する
おすすめの書き方は以下の通りです。
SQLの書き方:
業務コードの中で直接に空かどうか判断すればいいです。
締め括りをつける
検索条件によって検索された本数が多いほど、性能が向上することが明らかになり、場合によっては結合インデックスの作成を減らすこともできます。
ここでSQLについて「存在」かどうかを判断します。まだcountで操作していますか?時間がかかりますの文章はここまで紹介しました。SQLは「存在するかどうか」を判断します。以前の文章を検索してください。または次の関連記事を引き続きご覧ください。これからもよろしくお願いします。
道に入ったばかりのプログラマーであろうと、立派な砂場の長年のプログラマーであろうと、いつもと同じcountです。
現在の多くの人の書き方
何回かreviewコードを作った時、現在のような現象を発見しました。
業務コードの中で、一つ以上の条件によって、記録があるかどうかを調べて、どれぐらいの記録があるかに関心を持たない必要があります。一般的なSQLとコードの書き方は以下の通りです。
SQLの書き方:
SELECT count(*) FROM table WHERE a = 1 AND b = 2
Javaの書き方:
int nums = xxDao.countXxxxByXxx(params);
if ( nums > 0 ) {
// ,
} else {
// ,
}
いい感じですか?大丈夫です。方案を最適化する
おすすめの書き方は以下の通りです。
SQLの書き方:
SELECT 1 FROM table WHERE a = 1 AND b = 2 LIMIT 1
Javaの書き方:
Integer exist = xxDao.existXxxxByXxx(params);
if ( exist != NULL ) {
// ,
} else {
// ,
}
SQLはcountを使わないで、LIMIT 1に変えて、データベースの検索をする時に一つがあったら戻ってきます。これ以上検索しないでください。あとどれぐらいありますか?業務コードの中で直接に空かどうか判断すればいいです。
締め括りをつける
検索条件によって検索された本数が多いほど、性能が向上することが明らかになり、場合によっては結合インデックスの作成を減らすこともできます。
ここでSQLについて「存在」かどうかを判断します。まだcountで操作していますか?時間がかかりますの文章はここまで紹介しました。SQLは「存在するかどうか」を判断します。以前の文章を検索してください。または次の関連記事を引き続きご覧ください。これからもよろしくお願いします。