を可能性が存在します。しかし、あなたのテーブルが大きくて、たくさんの行を含んでいるなら、このアプローチの実際の問題は、このようなクエリはDBにとっては高価で、少なくともそれよりも遅くなる可能性があるということです。もちろん、時期尚早の最適化は悪いことではあるが、これはそうではありません - 私たちはアプローチを最適化しようとしている、いないコード:)
はオーディオ列にすべての行が空の場合は条件付きで切り替えたい
まず、質問are all rows' audio column empty?
を本当に正しいものと考えるとよいでしょう。そして、いいえ。実際にあなたはhow many of rows are not null
でもare all rows' audio column empty?
でも知っている必要はありません。完全にの場合、5,10,100,000の場合は無関係です。あなたは何をしなければならないのですか?質問をフリップし、if there's any row that is NOT null?
のような質問に対する答えを探します。一見すると両方の質問が似ていますが、答えを得るためにデータベースを使用しているので、これは実際にゲームチェンジャー全体です。ロジックによって
、audio
がNOT NULL
されている場合があり少なくとも一つ行を見つけるためにちょうど十分であるif there's any row that is NOT null?
質問に答えます。少なくとも少なくとも1つの条件を満たすために、1
はSQL LIMIT 1
を使用します。これにより、DBが停止し、最初のレコードが見つかるとすぐに結果が返されます。クエリ、全体のテーブルを通過する必要があります。これは、単純にすばやく、リソースが不足する必要があります。
実行すると、クエリは2つの結果を返すことができます。私たちは何も得られません(ゼロ行が返されます)。これは、audio
のすべてがNULL
であるか、逆に、if there's any row that is NOT null?
質問への回答が 'はい、それです(少なくとも返されたものがあるため)です。
しかし、この画像では、わずか3行のような
NOT NULL
行の簡単なチェック...何その場合にはできますか?私は、親IDのオーディオフィールドが利用可能かどうかをチェックしたいだけです。単一のフィールドがnullでない場合、trueを返す必要があります。なにか提案を? – Artistあなたの選択結果を親IDを 'WHERE parentid = 1'と共有する行に絞り込みます。 –
WebnetMobileは大丈夫です。私のものよりも良い答え。このような小さなものであっても、サーバーの負荷を最小限に抑えることにベストを尽くして、その習慣を身につけてください。 –