2011-02-10

精確的 where 條件以改善 SQL 效能

最初的 SQL 如下,以 group by 方式取得欄位總和:

select ... sum(aField)  ... from ... where ... group by ... ;

當資料成千上萬筆後,效能就慢下來了。

因為需求是要取得加總的值,如果資料不存在或加總為零,則視為零,在這樣的前提下,可以在 where 加上必須大於零的條件(或小於零的狀況)。

select ... sum(aField)  ... from ... where ... and aField > 0 ... group by ... ;

如果資料庫中大多數的值為空或為零時,這樣的修正可以大大改進效能,改進的幅度視值為空或為零的比例而定。

沒有留言:

張貼留言