MySQL数据库优化概述一_MySQL
MySQL数据库优化(一)
1. EXPLAIN 语法(得到SELECT 的相关信息)
EXPLAIN tbl_name
或者:
EXPLAIN SELECT select_options
tableIN 语句可以被当作 DESCRIBE 的同义词来用,也可以用来获取一个MySQL要执行的 SELECT 语句的相关信息。EXPLAIN tbl_name 语法和 DESCRIBE tbl_name 或 SHOW COLUMNS FROM tbl_name 一样。当在一个 SELECT 语句前使用关键字 EXPLAIN 时,MYSQL会解释了即将如何运行该 SELECT 语句,它显示了表如何连接、连接的顺序等信息。本章节主要讲述了第二种 EXPLAIN 用法。
在 EXPLAIN 的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让 SELECT 运行更快。
如果由于不恰当使用索引而引起一些问题的话,可以运行 ANALYZE TABLE 来更新该表的统计信息,例如键的基数,它能帮您在优化方面做出更好的选择。
您还可以查看优化程序是否以最佳的顺序来连接数据表。为了让优化程序按照 SELECT 语句中的表名的顺序做连接,可以在查询的开始使用 SELECT STRAIGHT_JOIN 而不只是 SELECT。
EXPLAIN 返回了一行记录,它包括了 SELECT 语句中用到的各个表的信息。这些表在结果中按照MySQL即将执行的查询中读取的顺序列出来。MySQL用一次扫描多次连接(single-sweep, multi-join) 的方法来解决连接。这意味着MySQL从第一个表中读取一条记录,然后在第二个表中查找到对应的记录,然后在第三个表中查找,依次类推。当所有的表都扫描完了,它输出选择的字段并且回溯所有的表,直到找不到为止,因为有的表中可能有多条匹配的记录下一条记录将从该表读取,再从下一个表开始继续处理。
在MySQL version 4.1中,EXPLAIN 输出的结果格式改变了,使得它更适合例如 UNION 语句、子查询以及派生表的结构。更令人注意的是,它新增了2个字段: id 和 select_type。当你使用早于MySQL 4.1的版本就看不到这些字段了。
EXPLAIN 结果的每行记录显示了每个表的相关信息,每行记录都包含以下几个字段:
id
本次 SELECT 的标识符。在查询中每个 SELECT 都有一个顺序的数值
select_type
SELECT 的类型,可能会有以下几种:
SIMPLE
简单的 SELECT (没有使用 UNION 或子查询)
PRIMARY
最外层的 SELECT。
UNION
第二层,在SELECT 之后使用了 UNION 。
DEPENDENT UNION
UNION 语句中的第二个 SELECT,依赖于外部子查询
SUBQUERY
子查询中的第一个 SELECT
DEPENDENT SUBQUERY
子查询中的第一个 SUBQUERY 依赖于外部的子查询
DERIVED
派生表 SELECT(FROM 子句中的子查询)
table
记录查询引用的表。
type
表连接类型。以下列出了各种不同类型的表连接,依次是从最好的到最差的:
system
表只有一行记录(等于系统表)。这是 const 表连接类型的一个特例
const
表中最多只有一行匹配的记录,它在查询一开始的时候就会被读取出来。由于只有一行记录,在余下的优化程序里该行记录的字段值可以被当作是一个恒定值。const 表查询起来非常快,因为只要读取一次!const 用于在和 PRIMARY KEY 或 UNIQUE 索引中有固定值比较的情形。下面的几个查询中,tbl_name 就是 const 表了:
SELECT * FROM tbl_name WHERE primary_key=1;
SELECT * FROM tbl_name
WHERE primary_key_part1=1 AND primary_key_part2=2;
eq_ref
从该表中会有一行记录被读取出来以和从前一个表中读取出来的记录做联合。与 const 类型不同的是,这是最好的连接类型。它用在索引所有部分都用于做连接并且这个索引是一个 PRIMARY KEY 或 UNIQUE 类型。eq_ref 可以用于在进行"="做比较时检索字段。比较的值可以是固定值或者是表达式,表达式中可以使用表里的字段,它们在读表之前已经准备好了。以下的几个例子中,MySQL使用了 eq_ref 连接来处理 ref_table:
SELECT * FROM ref_table,other_table
WHERE ref_table.key_column=other_table.column;
SELECT * FROM ref_table,other_table
WHERE ref_table.key_column_part1=other_table.column
AND ref_table.key_column_part2=1;
ref
该表中所有符合检索值的记录都会被取出来和从上一个表中取出来的记录作联合。ref 用于连接程序使用键的最左前缀或者是该键不是 PRIMARY KEY 或 UNIQUE 索引(换句话说,就是连接程序无法根据键值只取得一条记录)的情况。当根据键值只查询到少数几条匹配的记录时,这就是一个不错的连接类型。ref 还可以用于检索字段使用 = 操作符来比较的时候。以下的几个例子中,MySQL将使用 ref 来处理 ref_table:
SELECT * FROM ref_table WHERE key_column=expr;
SELECT * FROM ref_table,other_table
WHERE ref_table.key_column=other_table.column;
SELECT * FROM ref_table,other_table
WHERE ref_table.key_column_part1=other_table.column
AND ref_table.key_column_part2=1;

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Microsoft Word-Dokumente enthalten beim Speichern einige Metadaten. Diese Details werden zur Identifizierung des Dokuments verwendet, z. B. wann es erstellt wurde, wer der Autor war, Datum der Änderung usw. Es enthält auch andere Informationen wie die Anzahl der Zeichen, die Anzahl der Wörter, die Anzahl der Absätze und mehr. Wenn Sie den Autor oder die zuletzt geänderten Informationen oder andere Informationen entfernen möchten, damit andere Personen die Werte nicht kennen, gibt es eine Möglichkeit. In diesem Artikel erfahren Sie, wie Sie Informationen zum Autor und zur letzten Änderung aus einem Dokument entfernen. Entfernen Sie den Autor und die zuletzt geänderten Informationen aus dem Microsoft Word-Dokument. Schritt 1 – Gehen Sie zu

Systeminformationen verwenden Klicken Sie auf Start und geben Sie Systeminformationen ein. Klicken Sie einfach auf das Programm, wie im Bild unten gezeigt. Hier finden Sie die meisten Systeminformationen und unter anderem Informationen zur Grafikkarte. Erweitern Sie im Systeminformationsprogramm Komponenten und klicken Sie dann auf Anzeigen. Lassen Sie das Programm alle notwendigen Informationen sammeln und sobald es fertig ist, können Sie den grafikkartenspezifischen Namen und andere Informationen auf Ihrem System finden. Auch wenn Sie über mehrere Grafikkarten verfügen, finden Sie hier die meisten Inhalte zu dedizierten und integrierten Grafikkarten, die an Ihren Computer angeschlossen sind. Verwenden des Geräte-Managers von Windows 11 Wie bei den meisten anderen Windows-Versionen können Sie auch die Grafikkarte auf Ihrem Computer über den Geräte-Manager finden. Klicken Sie auf Start und dann

Aktuelle 3D-Bildrekonstruktionsarbeiten verwenden normalerweise eine Multi-View-Stereo-Rekonstruktionsmethode (Multi-View-Stereo), die die Zielszene aus mehreren Blickwinkeln (Multi-View) unter konstanten natürlichen Lichtbedingungen erfasst. Diese Methoden gehen jedoch normalerweise von Lambertschen Oberflächen aus und haben Schwierigkeiten, hochfrequente Details wiederherzustellen. Ein weiterer Ansatz zur Szenenrekonstruktion besteht darin, Bilder zu verwenden, die von einem festen Standpunkt, aber mit unterschiedlichen Punktlichtern aufgenommen wurden. Photometrische Stereomethoden nutzen beispielsweise diesen Aufbau und nutzen seine Schattierungsinformationen, um die Oberflächendetails von Nicht-Lambertschen Objekten zu rekonstruieren. Bestehende Einzelansichtsmethoden verwenden jedoch normalerweise Normalkarten oder Tiefenkarten, um das Sichtbare darzustellen

In iOS 17 gibt es eine neue AirDrop-Funktion, mit der Sie Kontaktinformationen mit jemandem austauschen können, indem Sie zwei iPhones berühren. Es heißt NameDrop und so funktioniert es. Anstatt die Nummer einer neuen Person einzugeben, um sie anzurufen oder ihr eine SMS zu schicken, können Sie mit NameDrop Ihr iPhone einfach in die Nähe der Person halten, um Kontaktdaten auszutauschen, damit sie Ihre Nummer hat. Wenn Sie die beiden Geräte zusammenfügen, wird automatisch die Schnittstelle zum Teilen von Kontakten angezeigt. Wenn Sie auf das Popup klicken, werden die Kontaktinformationen einer Person und ihr Kontaktposter angezeigt (Sie können Ihre eigenen Fotos anpassen und bearbeiten, ebenfalls eine neue Funktion von iOS17). Dieser Bildschirm enthält auch Optionen zum „Nur Empfangen“ oder zum Teilen Ihrer eigenen Kontaktinformationen als Antwort.

Zu den Tipps zur Optimierung der Hibernate-Abfrageleistung gehören: Verwenden von Lazy Loading, um das Laden von Sammlungen und zugehörigen Objekten zu verzögern; Verwenden von Stapelverarbeitungsvorgängen, um Aktualisierungs-, Lösch- oder Einfügevorgänge zu kombinieren, um häufig abgefragte Objekte im Speicher zu speichern; , Entitäten und ihre zugehörigen Entitäten abrufen; Abfrageparameter optimieren, um den SELECTN+1-Abfragemodus zu vermeiden; Verwendung von Indizes, um die Leistung bestimmter Abfragen zu verbessern;

In iOS17 gibt es eine neue AirDrop-Funktion, die es Ihnen ermöglicht, Kontaktinformationen mit jemandem auszutauschen, indem Sie zwei iPhones gleichzeitig berühren. Es heißt NameDrop und hier erfahren Sie, wie es tatsächlich funktioniert. NameDrop macht es überflüssig, die Nummer einer neuen Person einzugeben, um sie anzurufen oder ihr eine SMS zu schicken, damit sie Ihre Nummer hat. Sie können Ihr iPhone einfach in die Nähe der Person halten, um Kontaktinformationen auszutauschen. Wenn Sie die beiden Geräte zusammenfügen, wird automatisch die Schnittstelle zum Teilen von Kontakten angezeigt. Wenn Sie auf das Popup klicken, werden die Kontaktinformationen einer Person und ihr Kontaktposter angezeigt (ein eigenes Foto, das Sie anpassen und bearbeiten können, ebenfalls neu in iOS 17). Dieser Bildschirm enthält auch die Option „Nur Empfangen“ oder das Teilen Ihrer eigenen Kontaktinformationen als Antwort

SpringBoot ist ein beliebtes Java-Framework, das für seine Benutzerfreundlichkeit und schnelle Entwicklung bekannt ist. Mit zunehmender Komplexität der Anwendung können jedoch Leistungsprobleme zu einem Engpass werden. Um Ihnen dabei zu helfen, schnellstmöglich eine SpringBoot-Anwendung zu erstellen, finden Sie in diesem Artikel einige praktische Tipps zur Leistungsoptimierung. Optimieren Sie die Startzeit. Die Startzeit einer Anwendung ist einer der Schlüsselfaktoren für die Benutzererfahrung. SpringBoot bietet verschiedene Möglichkeiten zur Optimierung der Startzeit, z. B. die Verwendung von Caching, die Reduzierung der Protokollausgabe und die Optimierung des Klassenpfad-Scans. Sie können dies tun, indem Sie spring.main.lazy-initialization in der Datei application.properties festlegen

Wie kann die Zugriffsgeschwindigkeit der Python-Website durch Datenbankoptimierung verbessert werden? Zusammenfassung Beim Erstellen einer Python-Website ist eine Datenbank eine wichtige Komponente. Wenn die Datenbankzugriffsgeschwindigkeit langsam ist, wirkt sich dies direkt auf die Leistung und das Benutzererlebnis der Website aus. In diesem Artikel werden einige Möglichkeiten zur Optimierung Ihrer Datenbank erläutert, um die Zugriffsgeschwindigkeit Ihrer Python-Website zu verbessern, sowie einige Beispielcodes. Einführung Für die meisten Python-Websites ist die Datenbank ein wichtiger Bestandteil beim Speichern und Abrufen von Daten. Wenn die Datenbank nicht optimiert wird, kann sie zu einem Leistungsengpass werden. Buch
