12. Tables Without Indices
CREATE TABLE FruitsForSale(Fruit TEXT,State TEXT,Price REAL);
Figure 1: Logical Layout Of Table "FruitsForSale"
13. Tables Without Indices
SELECT price FROM fruitsforsale WHERE fruit='Peach’;
Figure 2: Full Table Scan"
14. Lookup By Index
CREATE INDEX Idx1 ON
fruitsforsale(fruit);
SELECT price FROM
fruitsforsale WHERE
fruit='Peach’;
Time:LogN + KLogN(K=1)
15. Multiple Result Rows
SELECT price FROM fruitsforsale WHERE fruit='Orange’
Time:LogN + KLogN(K=2)
Figure 6: Indexed Lookup For The Price Of Oranges
16. 多列索引
Figure 1: A Two-Column Index
CREATE INDEX Idx3 ON FruitsForSale(fruit, state);
17. 多列索引
SELECT price FROM fruitsforsale WHERE fruit='Orange'
AND state='CA'
Figure 11: Lookup Using A Two-Column Index
18. 多列索引
SELECT price FROM fruitsforsale WHERE fruit='Peach'
Figure 12: Single-Column Lookup On A Multi-Column Index
19. 覆盖索引
CREATE INDEX Idx4 ON FruitsForSale(fruit, state, price);
Figure 13: A Covering Index
20. 覆盖索引
SELECT price FROM fruitsforsale WHERE fruit='Orange'
AND state='CA';
Figure 14: Query Using A Covering Index
21. 排序:order by
SELECT * FROM fruitsforsale ORDER BY fruit;
Time:FTS + NLogN
Figure 16: Sorting Without An Index
22. Order by索引
SELECT * FROM fruitsforsale ORDER BY fruit;
Time:KLogN
Figure 18: Sorting With An Index
23. Order by覆盖索引
multiple rowid lookups can be avoided
Time:K
Figure 19: Sorting With A Covering Index