2013-12-11 17 views
7

Podczas korzystania EXPLAIN QUERY PLAN w SQLite 3 czasami daje mi moc taką jakCo to jest automatyczny indeks pokrywający?

SEARCH TABLE staff AS s USING AUTOMATIC COVERING INDEX (is_freelancer=? AND sap=?) (~6 rows) 

Skąd indeks pochodzą i co to robi? Tabela nie zawiera ręcznie utworzonych indeksów.

Odpowiedz

9

„Automatic” oznacza, że ​​SQLite tworzy tymczasowy indeks, który jest używany tylko dla tego zapytania, a potem usunięty.

Dzieje się tak, gdy szacuje się, że koszt utworzenia indeksu jest mniejszy niż koszt wyszukiwania rekordów w tabeli bez indeksu.

(A covering index jest indeksem, który zawiera wszystkie kolumny do odczytu, co oznacza, że ​​rekord odpowiadający wpisu indeksu nie musi być spojrzał w górę w tabeli.)