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`);
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`)
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)的索引,那么只需要修改原来的索引即可
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
4. Einspaltiger Index
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!