Heim > Datenbank > SQL > Hauptteil

Mehrere Methoden zur SQL-Optimierung

silencement
Freigeben: 2019-06-05 16:04:19
Original
27250 Leute haben es durchsucht

Mehrere Methoden zur SQL-Optimierung

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

kann wie folgt abgefragt werden:

select id from t where num=10
union all
select id from t where num=20
Nach dem Login kopieren

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)
Nach dem Login kopieren

For Kontinuierliche Werte, wenn Sie dazwischen verwenden können, verwenden Sie sie nicht in:

select id from t where num between 1 and 3
Nach dem Login kopieren

6. Die folgende Abfrage führt auch zu einem vollständigen Tabellenscan:

select id from t where name like &#39;%abc%&#39;
Nach dem Login kopieren

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
Nach dem Login kopieren

sollte geändert werden in:

select id from t where num=100*2
Nach dem Login kopieren

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)=&#39;abc&#39;--name以abc开头的id
Nach dem Login kopieren

sollte geändert werden in:

select id from t where name like &#39;abc%&#39;
Nach dem Login kopieren

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
Nach dem Login kopieren

Diese Art von Code gibt keine Ergebnismenge zurück, verbraucht jedoch das System Ressourcen und sollte so geändert werden:


create table #t(...)
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage