sql >> Database teknologi >  >> RDS >> Mysql

Bruger MySQL eksisterende indekser til at oprette nye indekser?

Nej, det vil det ikke.

Teoretisk set et indeks på (site, product, value, id) har alt, hvad der kræves for at bygge et indeks på ethvert undersæt af disse felter (inklusive indekserne på (product, value, id) og (value, id) ).

Opbygning af et indeks fra et sekundært indeks understøttes dog ikke.

Først MySQL understøtter ikke hurtig fuld indeksscanning (dvs. scanning af et indeks i fysisk rækkefølge snarere end logisk), hvilket gør en indeksadgangssti dyrere end den aflæste tabel. Dette er ikke et problem for InnoDB , da selve tabellen altid er klynget.

For det andet er postrækkefølgerne i disse indekser helt forskellige, så posterne skal sorteres alligevel.

Imidlertid er hovedproblemet med indeksoprettelseshastigheden i MySQL er, at den genererer ordren på stedet (bare at indsætte posterne én efter én i et B-Tree ) i stedet for at bruge en forudsorteret kilde. Som @Daniel nævnte, løser hurtig indeksoprettelse dette problem. Det er tilgængeligt som et plugin til 5.1 og leveres forudinstalleret i 5.5 .



  1. Ugyldig UTF-8-tegnstreng ved import af en CSV-fil til en MySQL-database

  2. Studerer MySQL, SQLite-kildekode for at lære om RDBMS-implementering

  3. Sådan opretter du brugerprofiler med PHP og MySQL

  4. PHP med MySQL 8.0+ fejl:Serveren anmodede om godkendelsesmetode ukendt for klienten