1. Um die Abfrage zu optimieren, sollten Sie zunächst in Betracht ziehen, Indizes für die beteiligten Spalten zu erstellen.
2. Versuchen Sie, eine Nullwertbeurteilung von Feldern in der where-Klausel zu vermeiden, da die Engine sonst die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt, z. B. kann Folgendes festgelegt werden:
select id from t where num is null
on num Der Standardwert ist 0. Stellen Sie sicher, dass die Num-Spalte in der Tabelle keinen Nullwert enthält, und fragen Sie dann wie folgt ab:
select id from t where num=0
3 Versuchen Sie, die Verwendung von != oder < zu vermeiden ;>-Operator in der where-Klausel, andernfalls gibt die Engine die Verwendung des Index auf und führt einen vollständigen Tabellenscan durch.
4. Vermeiden Sie die Verwendung von oder in der where-Klausel, um Bedingungen zu verbinden, da die Engine sonst die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt, wie zum Beispiel:
select id from t where num=10 or num=20
kann wie folgt abgefragt werden:
select id from t where num=10 union all select id from t where num=20
5.in und nicht in sollte ebenfalls mit Vorsicht verwendet werden, da es sonst zu einem vollständigen Tabellenscan führt, wie zum Beispiel:
select id from t where num in(1,2,3)
For Kontinuierliche Werte, wenn Sie dazwischen verwenden können, verwenden Sie sie nicht in:
select id from t where num between 1 and 3
6. Die folgende Abfrage führt auch zu einem vollständigen Tabellenscan:
select id from t where name like '%abc%'
7. Ausdrucksoperationen für Felder in der where-Klausel sollten so weit wie möglich vermieden werden, da dies dazu führen würde, dass die Engine die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt. Beispiel:
select id from t where num/2=100
sollte geändert werden in:
select id from t where num=100*2
8 Sie sollten versuchen, die Ausführung funktionaler Operationen für Felder in der where-Klausel zu vermeiden, da dies zum Absturz der Engine führen würde Geben Sie die Verwendung des Index auf und führen Sie einen vollständigen Tabellenscan durch. Beispiel:
select id from t where substring(name,1,3)='abc'--name以abc开头的id
sollte geändert werden in:
select id from t where name like 'abc%'
9 Führen Sie keine Funktionen, arithmetischen Operationen oder andere Ausdrucksoperationen auf der linken Seite von „=" aus Andernfalls kann das System den Index möglicherweise nicht korrekt verwenden.
10. Wenn Sie ein Indexfeld als Bedingung verwenden und der Index ein zusammengesetzter Index ist, muss das erste Feld im Index als Bedingung verwendet werden, um sicherzustellen, dass das System den Index verwendet 🎜 >
Andernfalls wird der Index nicht verwendet und die Feldreihenfolge sollte so weit wie möglich mit der Indexreihenfolge übereinstimmen. 11. Wenn Sie beispielsweise eine leere Tabellenstruktur generieren müssen:select col1,col2 into #t from t where 1=0
create table #t(...)
Das obige ist der detaillierte Inhalt vonMehrere Methoden zur SQL-Optimierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!