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

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
mysql - index: hvilken betydning har Key_n~
Fra : Morten Lindow


Dato : 22-05-03 08:59

Hej

Jeg har lige lavet index over en kæmpe tabel ved i min create table
statement at tilføje: INDEX (hit_id, result_id, start_hit, end_hit)

Jeg skal lave nogle joins baseret på start_hit og end_hit. Har det i den
forbindelse nogen betydning at Key_name for index på disse kollonner er
hit_id og ikke kolloners egne navne?




mysql> show index from ricehomo_hsp;
+--------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name |
Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+--------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| ricehomo_hsp | 0 | PRIMARY | 1 | hsp_id | A
| 13507560 | NULL | NULL | | BTREE | |
| ricehomo_hsp | 1 | hit_id | 1 | hit_id | A
| 13507560 | NULL | NULL | | BTREE | |
| ricehomo_hsp | 1 | hit_id | 2 | result_id | A
| 13507560 | NULL | NULL | | BTREE | |
| ricehomo_hsp | 1 | hit_id | 3 | start_hit | A
| 13507560 | NULL | NULL | | BTREE | |
| ricehomo_hsp | 1 | hit_id | 4 | end_hit | A
| 13507560 | NULL | NULL | | BTREE | |
+--------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+----


 
 
Peter Brodersen (22-05-2003)
Kommentar
Fra : Peter Brodersen


Dato : 22-05-03 21:16

On Thu, 22 May 2003 09:59:29 +0200, Morten Lindow <morten@binf.ku.dk>
wrote:

>Jeg skal lave nogle joins baseret på start_hit og end_hit. Har det i den
>forbindelse nogen betydning at Key_name for index på disse kollonner er
>hit_id og ikke kolloners egne navne?

Nej. Key_name er bare indexets navn. Du kan evt. selv vælge et mere
sigende index-navn, fx:

INDEX hitmedmere (hit_id, result_id, start_hit, end_hit)

Vælger du ikke noget navn, får det bare navnet på den første kolonne -
i dette tilfælde "hit_id". Findes et index med det navn i forvejen,
vil den få navnet "hit_id_2", og så fremdeles.

Navnet er udelukkende for at du kan referere til det specifikke index
(fx hvis det skal droppes, explicit bruges i en select, etc.).

Du kan se om dit index bliver brugt, ved at tilføje EXPLAIN før din
query, fx:

EXPLAIN SELECT * FROM ricehomo_hsp WHERE hit_id > 10;

--
- Peter Brodersen

Morten Lindow (23-05-2003)
Kommentar
Fra : Morten Lindow


Dato : 23-05-03 11:47

Peter Brodersen wrote:
>
> Nej. Key_name er bare indexets navn. Du kan evt. selv vælge et mere
> sigende index-navn, fx:
>
> INDEX hitmedmere (hit_id, result_id, start_hit, end_hit)
Siger jeg "SHOW INDEX FROM table " får jeg at kollone end_hit står i
indexet ved navn "hit_id" og har værdien seq_in_index = 4.

Betyder det ikke at end_hit blot er en del af en lang indgang i indexet?
Og at jeg ikke kan bruge indexet til at søge efter end_hit alene?

Hvis jeg istedet siger
INDEX(hit_id);
INDEX(result_id);
INDEX(start_hit);
INDEX(end_hit);

så får hvert kollone sit eget index - der bliver bygget et seperat BTREE
over hver kollone.

Morten


Peter Brodersen (23-05-2003)
Kommentar
Fra : Peter Brodersen


Dato : 23-05-03 17:45

On Fri, 23 May 2003 12:47:10 +0200, Morten Lindow <morten@binf.ku.dk>
wrote:

>> INDEX hitmedmere (hit_id, result_id, start_hit, end_hit)
>Siger jeg "SHOW INDEX FROM table " får jeg at kollone end_hit står i
>indexet ved navn "hit_id" og har værdien seq_in_index = 4.
>
>Betyder det ikke at end_hit blot er en del af en lang indgang i indexet?

Ah, jo. Jeg fik vist igen misforstået noget.

> Og at jeg ikke kan bruge indexet til at søge efter end_hit alene?

Det er korrekt. Der skal et selvstændigt index til.

--
- Peter Brodersen

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

Månedens bedste
Årets bedste
Sidste års bedste