Heim Datenbank MySQL-Tutorial Einführung in Optimierungsstrategien für SQL-Anweisungen

Einführung in Optimierungsstrategien für SQL-Anweisungen

Jan 28, 2020 pm 10:05 PM
sql语句 介绍 优化 策略

Einführung in Optimierungsstrategien für SQL-Anweisungen

1. Vermeiden Sie einen vollständigen Tabellenscan

Um die Abfrage zu optimieren, überlegen Sie zunächst, wo und in welcher Reihenfolge Sie erstellen möchten ein Index der beteiligten Spalten.

2. Vermeiden Sie die Beurteilung von Nullwerten

Versuchen Sie, die Beurteilung des Nullwerts von Feldern in der where-Klausel zu vermeiden, da die Engine sonst die Verwendung des Index und aufgibt Führen Sie den vollständigen Tabellenscan durch, z. B.:

select id from t where num is null
Nach dem Login kopieren

Sie können den Standardwert 0 für „num“ festlegen, sicherstellen, dass in der Spalte „num“ in der Tabelle kein Nullwert vorhanden ist, und dann eine Abfrage wie folgt durchführen:

select id from t where num=0
Nach dem Login kopieren

(Empfehlung für ein kostenloses Lernvideo-Tutorial: MySQL-Video-Tutorial)

3. Vermeiden Sie ungleiche Werturteile

sollte in der where-Klausel != oder dem <>-Operator so weit wie möglich vermieden werden, da die Engine sonst die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt.

4. Vermeiden Sie die Verwendung von or-Logik

Sie sollten versuchen, die Verwendung von or in der where-Klausel zum Verbinden von Bedingungen zu vermeiden, da dies sonst der Fall ist führt dazu, dass die Engine die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt, z. B.:

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. Verwenden Sie in und nicht in Logik mit Vorsicht

in und not in sollten ebenfalls mit Vorsicht verwendet werden, da dies sonst zu einem vollständigen Tabellenscan führt, z. B.:

select id from t1 where num in(select id from t2 where id > 10)
Nach dem Login kopieren

Zu diesem Zeitpunkt die äußere Abfrage scannt die gesamte Tabelle, ohne den Index zu verwenden. Es kann wie folgt geändert werden:

select id from t1,(select id from t1 where id > 10)t2 where t1.id = t2.id
Nach dem Login kopieren

Zu diesem Zeitpunkt wird der Index verwendet, was die Abfrageeffizienz erheblich verbessern kann.

6. Achten Sie auf Fuzzy-Abfrage

Die folgende Abfrage führt ebenfalls zu einem vollständigen Tabellenscan:

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

Fuzzy-Abfrage kann verwendet werden, wenn dies der Fall ist ist eine notwendige Bedingung. Wählen Sie eine ID aus, wobei ein Name wie „abc%“ zur Implementierung einer Fuzzy-Abfrage verwendet wird. Wenn der Header-Abgleich eine notwendige Logik ist, wird empfohlen, eine Volltextsuchmaschine (Elastic Search, Lucene, Solr usw.) zu verwenden.

7. Vermeiden Sie Feldberechnungen in Abfragebedingungen

Sie sollten versuchen, Ausdrucksoperationen für Felder in der where-Klausel zu vermeiden, da dies dazu führen würde, dass die Engine die Verwendung aufgibt Index. Vollständiger Tabellenscan. 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. Vermeiden Sie die Ausführung von Funktionsoperationen auf Feldern in Abfragebedingungen.

sollte ebenso vermieden werden Wie möglich in der where-Klausel werden Funktionsoperationen für Felder im Feld ausgeführt, was dazu führt, dass die Engine die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt. 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. Beachten Sie den Punkt

auf der linken Seite der WHERE-Klausel „=". Fügen Sie es nicht in den Unterabschnitt „where“ ein. Führen Sie keine Funktionen, Rechenoperationen oder andere Ausdrucksoperationen auf der linken Seite von „=" aus, da das System sonst möglicherweise nicht in der Lage ist, den Index korrekt zu verwenden.

10. Verwendung eines zusammengesetzten Index

Wenn ein Indexfeld als Bedingung verwendet wird und der Index ein zusammengesetzter Index ist, muss das erste Feld im Index verwendet werden Das System kann den Index nur verwenden, wenn er als Bedingung verwendet wird. Andernfalls wird der Index nicht verwendet und die Feldreihenfolge sollte so weit wie möglich mit der Indexreihenfolge übereinstimmen.

11. Definieren Sie keine unbedenklichen Abfragen

Schreiben Sie keine bedeutungslosen Abfragen:

select col1,col2 into #t from t where 1=0
Nach dem Login kopieren

Diese Art von Code wird Gibt nichts zurück. Die Ergebnismenge verbraucht jedoch Systemressourcen. Sie sollte wie folgt geändert werden:

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

12 existiert

In vielen Fällen ist dies der Fall Es empfiehlt sich, „exists“ anstelle von „in Select“ zu verwenden:

select num from a where num in(select num from b)
Nach dem Login kopieren

Ersetzen Sie es durch die folgende Anweisung:

select num from a where exists(select 1 from b where num=a.num)
Nach dem Login kopieren

13. Der Index kann auch fehlschlagen

并不是所有索引对查询都有效,SQL 是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL 查询可能不会去利用索引,如一表中有字段sex,male、female 几乎各一半,那么即使在sex 上建了索引也对查询效率起不了作用。

14、表格字段类型选择

尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。

这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。尽可能的使用varchar 代替char ,因为首先可变长度字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。

15、查询语法中的字段

任何地方都不要使用select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。

16、索引无关优化

不使用*、尽量不使用union,union all 等关键字、尽量不使用or 关键字、尽量使用等值判断。表连接建议不超过5 个。如果超过5 个,则考虑表格的设计。(互联网应用中)表连接方式使用外联优于内联。外连接有基础数据存在。

如:A left join B,基础数据是A。A inner join B,没有基础数据的,先使用笛卡尔积完成全连接,在根据连接条件得到内连接结果集。

大数据量级的表格做分页查询时,如果页码数量过大,则使用子查询配合完成分页逻辑。

Select * from table limit 1000000, 10
Select * from table where id in (select pk from table limit100000, 10)
Nach dem Login kopieren

相关文章教程推荐:mysql教程

Das obige ist der detaillierte Inhalt vonEinführung in Optimierungsstrategien für SQL-Anweisungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Kann ich MySQL unter Windows 7 installieren? Kann ich MySQL unter Windows 7 installieren? Apr 08, 2025 pm 03:21 PM

Ja, MySQL kann unter Windows 7 installiert werden, und obwohl Microsoft Windows 7 nicht mehr unterstützt hat, ist MySQL dennoch kompatibel damit. Während des Installationsprozesses sollten jedoch folgende Punkte festgestellt werden: Laden Sie das MySQL -Installationsprogramm für Windows herunter. Wählen Sie die entsprechende Version von MySQL (Community oder Enterprise) aus. Wählen Sie während des Installationsprozesses das entsprechende Installationsverzeichnis und das Zeichen fest. Stellen Sie das Stammbenutzerkennwort ein und behalten Sie es ordnungsgemäß. Stellen Sie zum Testen eine Verbindung zur Datenbank her. Beachten Sie die Kompatibilitäts- und Sicherheitsprobleme unter Windows 7, und es wird empfohlen, auf ein unterstütztes Betriebssystem zu aktualisieren.

So erstellen Sie Tabellen mit SQL Server mithilfe der SQL -Anweisung So erstellen Sie Tabellen mit SQL Server mithilfe der SQL -Anweisung Apr 09, 2025 pm 03:48 PM

So erstellen Sie Tabellen mithilfe von SQL -Anweisungen auf SQL Server: Öffnen Sie SQL Server Management Studio und stellen Sie eine Verbindung zum Datenbankserver her. Wählen Sie die Datenbank aus, um die Tabelle zu erstellen. Geben Sie die Anweisung "Tabelle erstellen" ein, um den Tabellennamen, den Spaltennamen, den Datentyp und die Einschränkungen anzugeben. Klicken Sie auf die Schaltfläche Ausführen, um die Tabelle zu erstellen.

Wie man die SQL -Injektion bewertet Wie man die SQL -Injektion bewertet Apr 09, 2025 pm 04:18 PM

Zu den Methoden zur Beurteilung der SQL -Injektion gehören: Erkennen verdächtiger Eingaben, Anzeigen der ursprünglichen SQL -Anweisungen, Verwendung von Erkennungswerkzeugen, Anzeigen von Datenbankprotokollen und Durchführung von Penetrationstests. Nachdem die Injektion erkannt wurde, ergreifen Sie Maßnahmen, um Schwachstellen zu entflammen, Patches zu überprüfen, regelmäßig zu überwachen und das Bewusstsein für das Entwickler zu verbessern.

So überprüfen Sie SQL -Anweisungen So überprüfen Sie SQL -Anweisungen Apr 09, 2025 pm 04:36 PM

Die Methoden zur Überprüfung von SQL -Anweisungen sind: Syntaxprüfung: Verwenden Sie den SQL -Editor oder die IDE. Logische Prüfung: Überprüfen Sie den Tabellennamen, den Spaltennamen, der Zustand und den Datentyp. Leistungsprüfung: Verwenden Sie Erklärung oder Analyse, um die Indizes zu überprüfen und Abfragen zu optimieren. Weitere Überprüfungen: Überprüfen Sie Variablen, Berechtigungen und Testfragen.

Optimiert MySQL Schließtabellen? Optimiert MySQL Schließtabellen? Apr 08, 2025 pm 01:51 PM

MySQL verwendet freigegebene Sperren und exklusive Sperren, um die Parallelität zu verwalten, und bietet drei Sperrtypen: Tabellenverriegelungen, Zeilensperrungen und Seitenverriegelungen. Zeilensperren können die Parallelität verbessern und die Anweisung für Update verwenden, um Zeilen exklusive Sperren hinzuzufügen. Pessimistische Schlösser nehmen Konflikte an, und optimistische Sperren beurteilen die Daten über die Versionsnummer. Häufige Probleme mit der Sperrtabelle, die sich als langsame Abfrage manifestieren, verwenden Sie den Befehl show processlist, um die vom Sperre gehaltenen Abfragen anzuzeigen. Zu den Optimierungsmaßnahmen gehören die Auswahl geeigneter Indizes, die Reduzierung des Transaktionsumfangs, die Batch -Operationen und die Optimierung von SQL -Anweisungen.

Muss MySQL bezahlen? Muss MySQL bezahlen? Apr 08, 2025 pm 05:36 PM

MySQL hat eine kostenlose Community -Version und eine kostenpflichtige Enterprise -Version. Die Community -Version kann kostenlos verwendet und geändert werden, die Unterstützung ist jedoch begrenzt und für Anwendungen mit geringen Stabilitätsanforderungen und starken technischen Funktionen geeignet. Die Enterprise Edition bietet umfassende kommerzielle Unterstützung für Anwendungen, die eine stabile, zuverlässige Hochleistungsdatenbank erfordern und bereit sind, Unterstützung zu bezahlen. Zu den Faktoren, die bei der Auswahl einer Version berücksichtigt werden, gehören Kritikalität, Budgetierung und technische Fähigkeiten von Anwendungen. Es gibt keine perfekte Option, nur die am besten geeignete Option, und Sie müssen die spezifische Situation sorgfältig auswählen.

So schreiben Sie ein Tutorial zum Anschließen von drei Tabellen in SQL -Anweisungen So schreiben Sie ein Tutorial zum Anschließen von drei Tabellen in SQL -Anweisungen Apr 09, 2025 pm 02:03 PM

In diesem Artikel wird ein detailliertes Tutorial zum Verbinden von drei Tabellen mithilfe von SQL -Anweisungen vorgestellt und die Leser dazu veranlasst, zu lernen, wie Daten effektiv in verschiedenen Tabellen korrelieren. Mit Beispielen und detaillierten Syntax -Erklärungen hilft Ihnen dieser Artikel dabei, die Verbindungstechniken von Tabellen in SQL zu beherrschen, damit Sie zugeordnete Informationen effizient aus der Datenbank abrufen können.

So wiederherstellen Sie Daten nach dem Löschen von SQL Zeilen So wiederherstellen Sie Daten nach dem Löschen von SQL Zeilen Apr 09, 2025 pm 12:21 PM

Das Wiederherstellen von gelöschten Zeilen direkt aus der Datenbank ist normalerweise unmöglich, es sei denn, es gibt einen Backup- oder Transaktions -Rollback -Mechanismus. Schlüsselpunkt: Transaktionsrollback: Führen Sie einen Rollback aus, bevor die Transaktion Daten wiederherstellt. Sicherung: Regelmäßige Sicherung der Datenbank kann verwendet werden, um Daten schnell wiederherzustellen. Datenbank-Snapshot: Sie können eine schreibgeschützte Kopie der Datenbank erstellen und die Daten wiederherstellen, nachdem die Daten versehentlich gelöscht wurden. Verwenden Sie eine Löschanweisung mit Vorsicht: Überprüfen Sie die Bedingungen sorgfältig, um das Verhandlich von Daten zu vermeiden. Verwenden Sie die WHERE -Klausel: Geben Sie die zu löschenden Daten explizit an. Verwenden Sie die Testumgebung: Testen Sie, bevor Sie einen Löschvorgang ausführen.

See all articles