Heim > Datenbank > MySQL-Tutorial > Hauptteil

Sehr wichtige Indexoperationen in MySql

黄舟
Freigeben: 2017-09-30 10:59:16
Original
1461 Leute haben es durchsucht

Konzentrieren Sie sich auf die Grundlagen – MySql-Indexoperationen, die man nicht vergessen darf

Ich werde hier nicht über die Grundkenntnisse des MySql-Index schreiben, ich nicht Ich möchte kein Informationsträger sein.

Teilen von Tipps: Workbench ist ein ER-/Datenbankmodellierungstool, das speziell für MySQL entwickelt wurde. Neben der Verwaltung der Datenbank ist es auch ein leistungsstarkes Tool zum Generieren von SQL-Anweisungen. Eine vernünftige Anwendung bringt mit halbem Aufwand das Doppelte des Ergebnisses. Voraussetzung ist natürlich, dass wir das Grundwissen verstehen.

Ich werde zunächst einige SQL-Anweisungen für Indexoperationen aussortieren. Der Grund für das Aussortieren ist, dass ich bei einem Problem die -Antwort in Baidu gefunden habe. Grundsätzlich sind die oben genannten Punkte alle falsch und jemand muss sie korrigieren.  

1. Löschung mehrerer Primärschlüssel (PRIMÄR)

 Hypothetisches Szenario: Sie haben in der Tabelle mehrere Primärschlüssel (PRIMARY) definiert. Beispiel: id ist ein automatisch inkrementierender Primärschlüssel, userCode ist ebenfalls als Primärschlüssel definiert und userAge ist ebenfalls als Primärschlüssel definiert. Wenn Sie nur eine ID behalten und die anderen beiden löschen möchten, lautet die entsprechende SQL-Anweisung wie folgt:

 Erklärung : Für die angegebene Tabelle ändern, den PRIMARY KEY löschen und die ID als PRIMARY KEY hinzufügen.


 
ALTER TABLE `表名` 
DROP PRIMARY KEY,ADD PRIMARY KEY (`id`);
Nach dem Login kopieren

2. Fügen Sie einen normalen Index hinzu

Warnung: Führen Sie niemals den Tabellennamen aus, ohne ihn zu ändern. Was ich sagen möchte, ist der Indexname. Sie müssen die Benennung des Index angemessen standardisieren, oder wenn Sie einen besseren haben Eins, du kannst es geben. Ich hinterlasse eine Nachricht.

Andernfalls wird ein Fehler gemeldet: Duplicate Key Error in MySQL (Duplicate Key Name ' ' ). Das liegt sicherlich daran, dass sich index_name nicht geändert hat. Indexname wird verwendet.


ALTER  TABLE  `table_name`  ADD  INDEX index_name (`column`)
Nach dem Login kopieren

 

3. Informationen zur Indexnutzungsspezifikation 

(1). Der Index muss physischen Speicherplatz belegen, sondern beeinträchtigt auch die Abfragegeschwindigkeit kontraproduktiv, daher muss das Datenbankdesign ein klares Verständnis der Definition des Index haben. Mehrere Prinzipien zum Erstellen eines Index

(2). Indextyp
1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。

2.=和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式

3.尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0,那可能有人会问,这个比例有什么经验值吗?使用场景不同,这个值也很难确定,一般需要join的字段我们都要求是0.1以上,即平均1条扫描10条记录

4.索引列不能参与计算,保持列“干净”,比如from_unixtime(create_time) = ’2014-05-29’就不能使用到索引,原因很简单,b+树中存的都是数据表中的字段值,但进行检索时,需要把所有元素都应用函数才能比较,显然成本太大。所以语句应该写成create_time = unix_timestamp(’2014-05-29’);

5.尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可
Nach dem Login kopieren

1. Gewöhnlicher Index

Der grundlegendste Index , ohne Einschränkungen 2. Eindeutiger Index

Der Wert der Indexspalte muss eindeutig sein, aber Nullwerte sind zulässig


3. Primärschlüsselindex

Der Primärschlüssel Der Schlüsselindex ist ein spezieller eindeutiger Index, es sind keine Nullwerte zulässig


4. Einspaltiger Index

Ein einzelner mehrspaltiger Index (kombinierter Index) ist effizienter als mehrere einspaltige Indizes


5. Präfix ganz links: Mehrspaltiger Index


Das obige ist der detaillierte Inhalt vonSehr wichtige Indexoperationen in MySql. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!