Changes between Version 1 and Version 2 of Indexing


Ignore:
Timestamp:
03/01/26 21:53:09 (3 weeks ago)
Author:
222004
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Indexing

    v1 v2  
    2929\\
    3030
    31 **Covering Index**
     31**Covering Index**\\
     32Индекс кој ги содржи сите колони од еден прашалник. Ако индексот ги има сите тие колони, MySQL не мора воопшто да ја чита самата табела (clustered data).
     33Се што му треба, го зема директно од индексот. - Со овој тип на индекс се намалува бројот на И/О операции, што доведува до побрзо извршување, но е поголем индекс што зафаќа повеќе простор и ги успорува сите INSERT/UPDATE операции.\\
     34Пример за креирање:
     35{{{
    3236
     37CREATE 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
     46CREATE TABLE temp_lookup (
     47  id INT NOT NULL,
     48  val VARCHAR(50),
     49  PRIMARY KEY (id)
     50) ENGINE=MEMORY;
     51 
     52CREATE 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 
     71EXPLAIN ANALYZE
     72SELECT
     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
     82FROM booking b
     83JOIN flight f         ON b.flight_id    = f.flight_id
     84JOIN passengerdetails pd ON b.passenger_id = pd.passenger_id
     85WHERE b.passenger_id = 10001
     86ORDER BY f.departure DESC;
     87
     88}}}
     89
     90
     91
     92