/ / SQLite `ifnull ()` vs `coalesce ()` ефективност - sql, изпълнение, sqlite, coalesce, ifnull

SQLite `ifnull ()` vs `coalesce ()` изпълнение - sql, производителност, sqlite, coalesce, ifnull

от 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;