| | 37 | CREATE INDEX idx_cov ON booking (flight_id, price, seat); |
| | 38 | |
| | 39 | }}} |
| | 40 | \\ |
| | 41 | **Hash индекс**\\ |
| | 42 | Само за точна еднаквост (=). Не поддржува range, ORDER BY, GROUP BY. Во MySQL InnoDB НЕ може да се креира рачно - InnoDB го прави адаптивен hash автоматски. Може рачно само во MEMORY engine.\\ |
| | 43 | Пример за креирање:\\ |
| | 44 | {{{ |
| | 45 | |
| | 46 | CREATE TABLE temp_lookup ( |
| | 47 | id INT NOT NULL, |
| | 48 | val VARCHAR(50), |
| | 49 | PRIMARY KEY (id) |
| | 50 | ) ENGINE=MEMORY; |
| | 51 | |
| | 52 | CREATE INDEX idx_hash ON temp_lookup (vrednost) USING HASH; |
| | 53 | |
| | 54 | }}} |
| | 55 | |
| | 56 | Некои други типови: FULLTEXT индекс (за пребарување на текст), SPATIAL индекс (геолокациски).\\ |
| | 57 | \\ |
| | 58 | |
| | 59 | == Сценарија и индексирање на прашалници |
| | 60 | === Сценарио 1: Агент на шалтер го пребарува целото патничко досие за конкретен патник |
| | 61 | Табели: booking JOIN flight JOIN passengerdetails\\ |
| | 62 | Цел: B-Tree индекс на еден столбец (booking.passenger_id)\\ |
| | 63 | \\ |
| | 64 | Најпрво, за тестирање, ќе ја извршиме следната скрипта која безбедно ќе ги избрише сите предефинирани индекси кои веќе ги има во Airportdb од страна на MySql, без нарушување на foreign-key constraints:// |
| | 65 | |
| | 66 | [wiki:Script1 Погледни ја скриптата овде] // |
| | 67 | // |
| | 68 | **Прашалник без индекс:** |
| | 69 | {{{ |
| | 70 | |
| | 71 | EXPLAIN ANALYZE |
| | 72 | SELECT |
| | 73 | b.booking_id, |
| | 74 | b.seat, |
| | 75 | b.price, |
| | 76 | f.flightno, |
| | 77 | f.departure, |
| | 78 | f.arrival, |
| | 79 | pd.firstname, |
| | 80 | pd.lastname, |
| | 81 | pd.country |
| | 82 | FROM booking b |
| | 83 | JOIN flight f ON b.flight_id = f.flight_id |
| | 84 | JOIN passengerdetails pd ON b.passenger_id = pd.passenger_id |
| | 85 | WHERE b.passenger_id = 10001 |
| | 86 | ORDER BY f.departure DESC; |
| | 87 | |
| | 88 | }}} |
| | 89 | |
| | 90 | |
| | 91 | |
| | 92 | |