Eine Abfrage, die von meiner Anwendung auf einem bestimmten Kunden ausgeführt wird, ist sehr langsam. Ich habe festgestellt, dass der Kunde viele Datensätze in einer Tabelle hat.Inner Join mit großen Tabelle verlangsamen Abfrage
die Abfrage so etwas wie dieses
SELECT T1.Field1,BT.Field2, T3.Field3
FROM TABLE1 T1 INNER JOIN
BIGTABLE BT ON FIELDS INNER JOIN
TABLE2 T2 ON FIELDS
ist bemerkte ich, dass wie diese Kommentierung in einem viel schnelleren Abfrage stellt sich heraus:
SELECT T1.Field1,/*BT.Field2,*/ T3.Field3
FROM TABLE1 T1 /*INNER JOIN
BIGTABLE BT ON FIELDS*/ INNER JOIN
TABLE2 T2 ON FIELDS
Also ich diesen Trick versucht, die Größe des Bigtable zu reduzieren :
--I use top 10 while the BIGTABLE contains 150000 records
SELECT top 10 *
INTO #BIGTABLE
FROM BIGTABLE
SELECT T1.Field1,BT.Field2, T3.Field3
FROM TABLE1 T1 INNER JOIN
#BIGTABLE BT ON FIELDS INNER JOIN
TABLE2 T2 ON FIELDS
DROP TABLE #BIGTABLE
Vor der Ausführung erwartete ich eine viel schnellere Abfrage, aber die Ausführung Die Zeit war ziemlich ähnlich. Könnten Sie bitte einen Weg vorschlagen, um die Leistung zu studieren?
Danke.
Wahrscheinlich brauchen Sie nur Indizes für die in den Joins verwendeten Spalten. –
Ich würde nicht 150.000 Datensätze als eine "große" Tabelle, vor allem für SQL Server. Können Sie den Ausführungsplan posten? Könnte alles sein, aber die Statistiken oder ein Index sind möglicherweise aus. Veröffentlichen Sie auch das Schema, wenn Sie bei nicht indexierten, großen Varchar-Feldern mitmachen, wird es Ihnen schlecht gehen. –
Sehen Sie sich die ersten 2 (oder alle) der Videos hier an: Das wird Ihnen sehr helfen: https://www.brentozar.com/archive/2016/10/think-like-engine-class-now-free- Open-Source/ –