Ich brauche Beratung, wie das schnellste Ergebnis für die Abfrage auf große Tabelle zu bekommen. Ich benutze SQL Server 2012, meine Bedingung ist wie folgt:Schnellste Ausführungszeit für die Abfrage auf Big-Size-Tabelle
Ich habe 5 Tabellen enthält Transaktionsaufzeichnung, jede Tabelle hat 35 Millionen Datensätze. Alle Tabellen haben 14 Spalten, die Spalten, die ich durchsuchen muss, sind GroupName, CustomerName und NoRegistration. Und ich habe eine Ansicht, die 5 von all diesen Tabellen enthält. Die Datensätze GroupName, CustomerName und NoRegistration sind nicht für jede Tabelle eindeutig.
Meine Anwendung habe eine Funktion, um diese Spalte zu suchen. Die Abfrage ist dies wie:
Suche nach Gruppenname:
SELECT DISTINCT(GroupName) FROM TransactionRecords_view WHERE GroupName LIKE ''[email protected]+'%'
Suche nach Name:
SELECT DISTINCT(CustomerName) AS 'CustomerName' FROM TransactionRecords_view WHERE CustomerName LIKE ''[email protected]+'%'
Suche nach NoRegistration:
SELECT DISTINCT(NoRegistration) FROM TransactionRecords_view WHERE LOWER(NoRegistration) LIKE LOWER(@NoRegistration)+'%'
Meine Frage ist, wie kann Ich erreiche schnellste Ausführungszeit für die Suche? Mit meinem Zustand jetzt, jedes Mal, wenn ich suche, dauerte es 3 bis 5 Minuten.
Meine Idee ist es, eine neue Tabellen enthält die unterschiedlichen GroupName, CustomerName und NoRegistration von allen 5 Tabellen.
Ist meine Idee ist die Ausführungszeit ist schneller? oder irgendeine andere Idee?
Danke
EDIT:
Dies ist Abfrage für view "TransactionRecords_view"
CREATE VIEW TransactionRecords_view
AS
SELECT * FROM TransactionRecords_1507
UNION ALL
SELECT * FROM TransactionRecords_1506
UNION ALL
SELECT * FROM TransactionRecords_1505
UNION ALL
SELECT * FROM TransactionRecords_1504
UNION ALL
SELECT * FROM TransactionRecords_1503
So sind die Spalten sind typisiert-in Strings: vielleicht kann es für Sie sinnvoll sein? Sie können eine neue Transaktion mit GroupName 'NewGroup' eingeben und wenn Sie diese vor ein paar Jahren einmal verwendet haben, ist die neue Transaktion zufällig in derselben Gruppe? Aber wenn es einen Tippfehler wie "NewGroup" gibt, dann ist es zufällig eine Gruppe für sich? Ich würde eher eine GroupName-Tabelle mit den Transaktionen erwarten, die sich auf ihre Datensätze beziehen. –
'SELECT * ... UNION ALL'? Also sind deine fünf Tische alle gleich strukturiert? Warum hast du dann fünf Tische und keinen? Wäre das nicht viel besser? –
@ThorstenKettner, weil es jeden Monat eine Transaktion aufzeichnet. Eine andere Funktion in meinen Apps ist die Berechnung der Transaktion pro Monat, letzten Monat und letztes Jahr, also dachte ich, es würde jeden Monat eine bessere Performance geben. – user1008497