2017-01-31 2 views
0

Ich versuche, mit Indizes zu experimentieren, aber ich bin es immer noch neu. Sagen wir, ich verwenden Sie die folgende viel fragt, damit ich Indizes für die Tabellen music und musicians vornehmen müssen.bester Weg, um mit diesen wiederholten Abfragen Index

SELECT * 
    FROM music 
    where musician_id = @id 

    SELECT * 
    FROM music 
    where musician_id = @id and date_of_birth > @date 

    SELECT * 
    FROM music 
    where date_of_birth > @date1 and date_of_birth < @date2 

    SELECT first_name, last_name, musician_website 
    FROM musicians 
    where last_name = @last_name 

    SELECT customer_id, first_name, last_name,musician_website 
    FROM musicians 
    where last_name = @last_name and musician_website= @site 

Was Sie tun, denken, ist die beste Lösung, wenn ich für diese Abfragen machen Indizes möchten. Ist es am besten, ein für jede Spalte zu machen, was ich will (zum Beispiel 1 für musician_id, einen für date_of_birth etc ...) oder vielleicht sie als Paare wie diese nehmen: musician_id mit date_of_birth, dann last_name mit musician_website und dann nur date_of_birth für die dritte Abfrage (wo ich sie nach Datum sortieren muss). Was wäre die beste Option hier und warum?

+0

mindestens das Tabellenschema ... und warum 'music' eine' date_of_birth' hat? Sollen wir raten, dass Sie dort einen Beitritt planen? – SqlZim

+0

Nein, es ist nur ein schlechter Name für den Tisch. Tischmusik halten Informationen über den Musiker und das Geburtsdatum. – user2975038

+0

Klingt wie Sie über [Normalisierung] (http://mikehillyer.com/articles/an-introduction-to-database-normalization/) vor der Indizierung müssen sich Sorgen zu machen. – SqlZim

Antwort

2

Die Indizes, die Sie wollen, sind:

  • music(musician_id, date_of_birth) (Abfragen 1 und 2)
  • music(date_of_birth) (Abfrage 3)
  • musicians(last_name, web_site) (abfragt 4 und 5)

Für die letzte Index, können Sie customer_id und first_name einschließen, wenn Sie wirklich wollen.

+1

Die Abfragen 1, 2 und 3 beziehen sich auf eine Tabelle namens 'music' anstelle von' musicers' – SqlZim

+0

Ja, Sie haben Recht @SqlZim – user2975038

+0

@SqlZim. . . Vielen Dank; bessere Augen als ich. –

Verwandte Themen