от SQLite сайт,
Функцията ifnull () е еквивалентна на coalesce () с два аргумента.
Тогава, ако имам два аргумента, кой е по-бърз?
Отговори:
4 за отговор № 1Аз потвърдих твърдението на Гордън Линоф с някои експерименти. Настройка: SQLiteSpy на Windows 8, i5 и цялата таблица в RAM.
Всяка заявка отнема около 1.64 секунди с много малки колебания (по-малко от 0.1 sec). През по-голямата част от времето те бяха на 1,64 секунди.
заявки:
create table t (
a int, b int);
insert into t values (null,null);
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
insert into t select case when random() < .5 then 1 end, case when random() < .5 then 1 end from t;
select sum(ifnull(a, b)) from t;
select sum(coalesce(a, b)) from t;
select count(*) from t;