[db2] Auf welche Spalte Index erstellen?

oraclin25

Erfahrenes Mitglied
Hallo zusammen,

wenn ich folgenden SQL-Code schreibe, dann dauert es sehr lange, bis das Ergebnis ausgespuckt wird:

Code:
select * from meinSchema.meineTabelle
where Spalte_01 = Spalte_02

Zur Beschleunigung möchte ich gerne ein Index erstellen. Ich weiss nur nicht, auf welche Spalte. Hat jemand vielleicht eine Idee?

Ansonste habe ich noch eine Frage:
Code:
Tabelle_98

Name    Kennung
Ratna      1
Werner     1
Ulf        1
Sandra     2
Peter      3
 

Tabelle _99

ID     Eigenschaft
1      Faul
2      Fleißig
3      Vorbildlich

Wie kann ich aus den beiden Tabellen eine neue Tabelle erstellen, die lediglich die Kennungen auflösen?
Code:
Neue_Tabelle

Name       Kennung
Ratna      Faul
Werner     Faul
Ulf        Faul
Sandra     Fleißig
Peter      Vorbildlich

Vielen lieben Dank.

Schöne Grüße aus Rheinland,
Eure Ratna:)
 
JOIN ist das Zauberwort

SQL:
INSERT INTO 
   neue_tabelle
     (
      name, 
      kennung
     )
SELECT 
    t98.name, 
    t99.eigenschaft
FROM 
    tabelle_98 t98,
    tabelle_99 t99
WHERE
    t98.kennung = t99.id;
 
Hallo zusammen,

wenn ich folgenden SQL-Code schreibe, dann dauert es sehr lange, bis das Ergebnis ausgespuckt wird:

Code:
select * from meinSchema.meineTabelle
where Spalte_01 = Spalte_02

Zur Beschleunigung möchte ich gerne ein Index erstellen. Ich weiss nur nicht, auf welche Spalte. Hat jemand vielleicht eine Idee?

Code:
SELECT *
ist schonmal eine schlechte ausgangsposition. Da kannst du nicht viel mehr machen, als einen Index auf Spalte_01 zu legen. Wenn du nur bestimmte Felder brauchst, bzw. auch wenn die Anzahl der Felder überschaubar ist und es sich lohnt, kannst du einen Abdeckenden Index nutzen, indem du zuerst Spalte_01 und dann alle Felder, die du abfragen möchtest in den Index legst.
 
Hallo xCondoRx und BaseBallBatBoy,

vielen lieben Dank für die Hilfestellungen. Bzgl:
Code:
INSERT INTO 
   neue_tabelle
     (
      name, 
      kennung
     )
SELECT 
    t98.name, 
    t99.eigenschaft
FROM 
    tabelle_98 t98,
    tabelle_99 t99
WHERE
    t98.kennung = t99.id;

Dadurch wird eine neue Tabelle erzeugt. Ich hab geirrt, ich hätte eigentlich gerne die Änderung in der Tabelle vorgenommen. Deshalb hab ich an ALTER TABLE gedacht:

Code:
ALTER TABLE meinSchema.Tabelle_98
ALTER COLUMN kennung
SET 
     t99.kennung
FROM 
     Tabelle_98 t98, 
     Tabelle_99 t99
WHERE 
     t98.kennung = t.99.id;

Leider hat es nicht getan. Wo hab ich hier einen Fehler? Vielen Dank.

Schöne Grüße aus Rheinland,

Eure Ratna:p
 
Dadurch wird eine neue Tabelle erzeugt.

Falsch. Es heisst ja "INSERT INTO". Also werden natürlich Datensätze in eine bereits bestehende Tabelle eingefügt. Tabellen werde mit "CREATE TABLE" erzeugt.

Was du willst geht nicht so direkt. Am besten erstellst du eine neue Tabelle, machst ein insert into wie beschrieben und löschst anschliessend die anderen beiden Tabellen.
 
Zurück