1

VB アプリで DBNUll エラーが発生するのにうんざりしているため、すべての SELECT 列で COALESCE を使用すると、MySql のオーバーヘッドはどうなるでしょうか。私は心配する必要がありますか?

Select COALESCE(price_small_breed, 0), COALESCE(discount_small_breed, '') From tblServicePrice Where service_id = .... just some example found on net

前もって感謝します

4

2 に答える 2

3

いいえ、オーバーヘッドについて心配する必要はありません。

私が知っている唯一のパフォーマンスの問題は、 SQL Servercoalesce()の一部のバージョン(MySQL ではない!) で、最初の引数が NULL でない場合に 2 回評価されることです。これは、サブクエリなど、コストがかかる場合に問題になります。

ただし、一般に、組み込み関数のオーバーヘッドは、データベースとの間でデータを移動するコストと比較して最小限に抑えられます。

より複雑なクエリには例外があり、 のような関数を使用するとcoalesce()、一部の操作でインデックスが使用されなくなる可能性があります。繰り返しますが、これはあなたの場合には当てはまりません。

于 2013-01-27T22:45:55.783 に答える
2

おそらく最善の解決策は、フィールドが null 値を許可しないようにスキーマを更新することです。null をオフにして、デフォルト値 (0 または '' など) を設定すると、問題を解決できます。

于 2013-01-27T21:29:35.797 に答える