PingPong: Primary Key und Index

Hallo,

ich habe da mal eine Frage zu MySQL 5:

Indizes werden ja genutzt, um schnell Datensätze finden zu können.
In meiner Beispiel-Tabelle besteht mein Primary Key nun aus 2 Feldern (ein Int und ein VarChar).
Nun gibt es aber Fälle, in denen ich eine SELECT-Abfrage (mit Group By und Count) mache, wo in der WHERE-Klausel nur die VarChar-Spalte angegeben ist, also nicht der komplette Primary Key.
Wird auch dieser Zugriff durch den angegebene Primary Key beschleunigt, oder muss ich für die einzelne VarChar-Spalte noch einen extra Index anlegen?

Gruss,
PingPong

  1. Hi!

    Wird auch dieser Zugriff durch den angegebene Primary Key beschleunigt, oder muss ich für die einzelne VarChar-Spalte noch einen extra Index anlegen?

      
    EXPLAIN SELECT * FROM mytab WHERE mycol LIKE 'myval'  
      
    possible_keys: --- key: ---  
      
    ALTER TABLE mytab ADD INDEX (mycol)  
      
    possible_keys: mycol key: mycol  
      
    # Wenn es gar nicht will, kann den Schlüssel auch festlegen (USE KEY):  
      
    EXPLAIN SELECT * FROM mytab USE KEY(mycol) WHERE mycol LIKE 'myval'  
    
    

    Schönen Sonntag,
    Jonny 5

  2. Ich kenne das so, dass bei einem zusammengesetzten Schlüssel der erste angegebene Teil des Schlüssels alleine auch genutzt werden kann.
    Wenn man den also definiert als "Spalte A + Spalte B", dann kann Spalte A auch separat aus dem Index bedient werden. Spalte B nicht, denn die steht im Suchwort an zweiter Stelle, so könnte man sich das vorstellen.

    Ob das bei MySQL auch so ist kann ich nicht sagen, aber vielleicht weiß das ja jemand. Wäre interessant zu wissen.

    1. Hi!

      Ich kenne das so, dass bei einem zusammengesetzten Schlüssel der erste angegebene Teil des Schlüssels alleine auch genutzt werden kann.
      Wenn man den also definiert als "Spalte A + Spalte B", dann kann Spalte A auch separat aus dem Index bedient werden. Spalte B nicht, denn die steht im Suchwort an zweiter Stelle, so könnte man sich das vorstellen.

      Ob das bei MySQL auch so ist kann ich nicht sagen, aber vielleicht weiß das ja jemand. Wäre interessant zu wissen.

      Lass es dir erklären: EXPLAIN SELECT ...

      Lo!