взгляд поведения sqlite в слудеющем запросе
create table entity_meta (
entity_kind text
entity_rowid integer
meta_key text
meta_value_id integer
meta_value_name text
);
create index 'entity_kind_rowid' on entity_meta(entity_kind, entity_rowid);
create index 'meta_key_value_id' on entity_meta(meta_key, meta_value_id);
select entity_rowid from entity_meta
where entity_kind = 'some_kind'
and meta_key = 'some_key' and meta_value_id in (1,2,3);
с ~10М записей в этой таблице селект занимает ~80мс
но если селектить просто rowid то занимает 8мс
может ктонибудь объяснить почему такая разница?
В случае с select entity_rowid вы делаете запрос к таблице, в случае с select rowid данных в индексе достаточно для ответа. Наверное, так. То есть, после select entity_rowid SQLite идёт брать данные в таблице по их rowid, что намного сложнее.
Обсуждают сегодня