Производительность CASE в MySQL?

Интересно, используется ли выражение CASE ... WHEN ... THEN в запросах MySQL
{{1 }} отрицательно влияет на производительность?

Вместо использования выражения CASE (например, внутри вашего запроса UPDATE)
у вас всегда есть возможность использовать оператор if else в вашей программе
{{1 }} написано на php, python, perl, java, ..., чтобы выбрать, какой запрос отправлять, например (в псевдокоде):

prepareStatement(
"UPDATE t1 SET c1=c1+1, msg=CASE (@v:=?) WHEN '' THEN msg ELSE @v END"
);
setStatementParameter(1, message);

или внутри:

if (message == "") {
    prepareStatement("UPDATE t1 SET c1=c1+1");
} else {
    prepareStatement("UPDATE t1 SET c1=c1+1, msg=?");
    setStatementParameter(1, message);
}

(c1 здесь нужен только для того, чтобы показать, что что-то происходит в обоих случаях)

Каким образом это дает лучшую производительность?
И сколько это снижает производительность?

5
задан tsds 11 October 2011 в 07:20
поделиться