Heim  >  Artikel  >  Datenbank  >  MySql-Indexoperation

MySql-Indexoperation

一个新手
一个新手Original
2017-09-30 10:00:39907Durchsuche

Ich werde hier nicht über die Grundkenntnisse des MySql-Index schreiben, 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`);

2. Gewöhnlichen Index hinzufügen

Warnung: Tausende Führen Sie es nicht aus, ohne es zu ändern. Was ich sagen möchte, ist index_name. Sie müssen die Benennung des Index angemessen standardisieren, wenn Sie einen besseren haben Hinterlassen Sie mir 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`)

3. Informationen zur Indexverwendungsspezifikation 

(1).Verwendung des Index

Indizes müssen physischen Speicherplatz belegen. Die unsachgemäße Verwendung von Indizes belegt nicht nur Speicherplatz, sondern wirkt sich auch kontraproduktiv auf die Abfragegeschwindigkeit aus. Daher muss die Definition des Index im Datenbankdesign erfolgen . Sehr klares Verständnis. Mehrere Prinzipien zum Erstellen eines Index

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)的索引,那么只需要修改原来的索引即可
(2). Indextyp

1. Gewöhnlicher Index

Der einfachste 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üsselindex ist ein spezieller eindeutiger Index und Nullwerte sind nicht zulässig. Wert


4. Einspaltiger Index

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


5 . Präfix ganz links (Präfix ganz links): Mehrspaltiger Index

Das obige ist der detaillierte Inhalt vonMySql-Indexoperation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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