/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
lidt mere om index i mysql
Fra : Martin


Dato : 02-08-01 21:10

Jeg har læst lidt om index attr. i mysql..
Kan man så ikke bare lave ALLE felter til index så skulle søgningen jo
gå meget hurtigere?

--
Bye for now Martin
http://wizprod.com - Billigt webdesign findes her
http://natten-i.dk - http://kew.natten-i.dk
Email: martini@mailme.dk - admin@natten-i.dk

 
 
Troels Arvin (02-08-2001)
Kommentar
Fra : Troels Arvin


Dato : 02-08-01 22:19

On Thu, 02 Aug 2001 22:09:37 +0200, "Martin" <martini@mailme.dk> wrote:

> Jeg har læst lidt om index attr. i mysql.. Kan man så ikke bare lave
> ALLE felter til index så skulle søgningen jo gå meget hurtigere?

ALLE felter er en dårlig idé, bl.a. for det forringer performance ved
INSERTs. Men samtidig har jeg hørt folk anbefale, at smide index på en
kolonne, hvis man er i tvivl - så man må gerne være lidt rundhåndet med
dem.

--
Greetings from Troels Arvin, Copenhagen, Denmark

Christian Schmidt (02-08-2001)
Kommentar
Fra : Christian Schmidt


Dato : 02-08-01 23:56

Troels Arvin wrote:
>
> "Martin" <martini@mailme.dk> wrote:
> >
> > Jeg har læst lidt om index attr. i mysql.. Kan man så ikke bare lave
> > ALLE felter til index så skulle søgningen jo gå meget hurtigere?
>
> ALLE felter er en dårlig idé, bl.a. for det forringer performance ved
> INSERTs. Men samtidig har jeg hørt folk anbefale, at smide index på en
> kolonne, hvis man er i tvivl - så man må gerne være lidt rundhåndet med
> dem.

Hvis man er i tvivl, kan man checke sine SELECTs med EXPLAIN. Her får
man at vide, hvilke indekser (om nogen) der benyttes.

Betragt et (normalt?) indeks som en sorteret liste over værdierne i én
kolonne (eller flere kolonner for et fler-kolonne-indeks), hvor der for
hver værdi er en angivelse af, hvor på disken resten af rækken er
lagret. Det er superhurtigt at søge i en sorteret liste (kan gøres i
O(log n), dvs. det tager en tid, der er proportionalt med logaritmen til
antallet af elementer).

Bl.a. på baggrund af denne betragtning har jeg en formodning om, at en
SQL-server max. benytter ét indeks pr. tabel ved en SELECT.


Undertiden kan det betale sig at lave fler-kolonne-indekser. Hvis der fx
er to kolonner, som ofte bliver søgt på samtidig, dvs. SELECT * FROM
tabel WHERE a = 3 AND b = 4, da vil det ofte være en fordel at lave ét
indeks over disse to kolonner. Dette indeks vil også kunne bruges, når
man søger på kolonnen a alene (men ikke på b).


Christian

Søg
Reklame
Statistik
Spørgsmål : 177508
Tips : 31968
Nyheder : 719565
Indlæg : 6408575
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste