Frage

From SQLite site,

The ifnull() function is equivalent to coalesce() with two arguments.

Then, if I have two arguments, which one is faster?

War es hilfreich?

Lösung

I have confirmed Gordon Linoff's statement with some experiments. Setup: SQLiteSpy on Windows 8, i5 and the whole table in RAM.

Either query took about 1.64 secs with very small fluctuations (less than .1 sec). Most of the time they were right on 1.64 secs.

Queries:

    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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top