/ / SQLite `ifnull ()` vs `coalesce ()` performance - sql, performance, sqlite, coalesce, ifnull

Performances SQLite `ifnull ()` vs `coalesce ()` - sql, performance, sqlite, coalesce, ifnull

De Site SQLite,

La fonction ifnull () est équivalente à coalesce () avec deux arguments.

Ensuite, si j’ai deux arguments, lequel est le plus rapide?

Réponses:

4 pour la réponse № 1

J'ai confirmé la déclaration de Gordon Linoff avec quelques expériences. Setup: SQLiteSpy sous Windows 8, i5 et la table entière en RAM.

Chaque requête a pris environ 1,64 seconde avec de très petites fluctuations (moins de 0,1 seconde). La plupart du temps, ils avaient raison sur 1,64 secondes.

Requêtes:

    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;