Kalite endèks baz done MySQL / kreye / itilize konbinezon ALTER itilizasyon deklarasyon nan MySQL

Misklendèks kalite / kreye / itilize Combo chanje nanMisklitilizasyon deklarasyon lòd

Endis MySQL

Etablisman an nan endèks MySQL trè enpòtan pou operasyon an efikas nan MySQL, ak endèks la ka anpil amelyore vitès la rekipere nan MySQL.

Pou egzanp, si MySQL ak konsepsyon rezonab ak itilizasyon endèks se yon Lamborghini, Lè sa a, MySQL san endèks ak endèks se yon tricycle imen.

Endèks la divize an yon sèl kolòn endèks ak konpoze endèks.Endèks yon sèl kolòn, se sa ki, yon endèks gen sèlman yon sèl kolòn, yon tab ka gen plizyè endèks yon sèl kolòn, men sa a se pa yon endèks konpoze.Endèks konpoze, se sa ki, yon endèks gen plizyè kolòn.

Lè w ap kreye yon endèks, ou bezwen asire w ke endèks la se yon kondisyon ki aplike nan rechèch la SQL (anjeneral kòm yon kondisyon nan kloz la WHERE).

An reyalite, endèks la se tou yon tab, tab la sove kle prensipal la ak jaden endèks, ak pwen nan dosye yo nan tablo antite.

Pi wo a ap pale sou benefis ki genyen nan lè l sèvi avèk endèks, men itilizasyon twòp nan endèks ap mennen nan abi.Se poutèt sa, endèks la pral gen tou enpèfeksyon li yo: byenke endèks la anpil amelyore vitès la rechèch, li pral diminye vitès la nan mete ajou tab la, tankou INSERT, UPDATE ak DELETE nan tab la.Paske lè mete ajou tab la, MySQL pa sèlman sove done yo, men tou, sove fichye endèks la.

Indexing yon fichye endèks ki konsome espas disk.


endèks nòmal

kreye endèks

Sa a se endèks ki pi fondamantal, li pa gen okenn restriksyon.Li ka kreye nan fason sa yo:

CREATE INDEX indexName ON mytable(username(length)); 

Pou kalite CHAR ak VARCHAR, longè a ka mwens pase longè aktyèl la nan jaden an; pou kalite BLOB ak TEXT, longè dwe espesifye.

Modifye estrikti tab la (ajoute endèks)

ALTER table tableName ADD INDEX indexName(columnName)

Espesifye dirèkteman lè w ap kreye tab la

CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
INDEX [indexName] (username(length))  
 
);  

Sentaks pou lage yon endèks

DROP INDEX [indexName] ON mytable; 

endèks inik

Li sanble ak endèks òdinè anvan an, diferans lan se: valè kolòn endèks la dwe inik, men valè nil yo pèmèt.Nan ka yon endèks konpoze, konbinezon an nan valè kolòn yo dwe inik.Li ka kreye nan fason sa yo:

kreye endèks

CREATE UNIQUE INDEX indexName ON mytable(username(length)) 

Modifye estrikti tab la

ALTER table mytable ADD UNIQUE [indexName] (username(length))

Espesifye dirèkteman lè w ap kreye tab la

CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
UNIQUE [indexName] (username(length))  
 
);  

Ajoute epi retire endèks lè l sèvi avèk lòd ALTER la

Gen kat fason pou ajoute yon endèks nan yon tab done:

  • ALTER TABLE tbl_name ADD PRIMARY KEY (list_kolòn): Deklarasyon sa a ajoute yon kle prensipal, ki vle di ke valè endèks yo dwe inik epi yo pa ka NULL.
  • ALTER TABLE tbl_name ADD UNIQUE index_name (list_kolòn): Valè endèks ki te kreye pa deklarasyon sa a dwe inik (eksepte NULL, NULL ka parèt plizyè fwa).
  • ALTER TABLE tbl_name ADD INDEX index_name (list_kolòn): Ajoute yon endèks nòmal, valè endèks la ka parèt plizyè fwa.
  • ALTER TABLE tbl_name ADD FULLTEXT non_endèks (lis_kolòn):Deklarasyon an presize endèks la kòm FULLTEXT pou endèks tèks konplè.

Egzanp sa a se ajoute yon endèks nan yon tab.

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

Ou kapab tou itilize kloz DROP sou kòmand ALTER pou depoze endèks yo.Eseye egzanp sa a pou lage endèks la:

mysql> ALTER TABLE testalter_tbl DROP INDEX c;

Ajoute epi retire kle prensipal yo lè l sèvi avèk lòd ALTER la

Kle prensipal la ka sèlman aji sou yon sèl kolòn Lè w ajoute yon endèks kle prensipal, ou bezwen asire ke kle prensipal la pa NULL pa default (PA NULL).Egzanp yo se jan sa a:

mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);

Ou kapab tou efase yon kle prensipal ak lòd ALTER:

mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;

Ou sèlman bezwen presize KLE PRIMÈ a lè jete kle prensipal la, men lè jete yon endèks, ou dwe konnen non endèks la.


montre enfòmasyon endèks yo

Ou ka itilize kòmand SHOW INDEX pou lis enfòmasyon ki enpòtan sou endèks yo nan tablo a.Enfòmasyon sou pwodiksyon an ka fòma lè w ajoute \G.

Eseye egzanp sa yo:

mysql> SHOW INDEX FROM table_name; \G
........

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) pataje "MySQL Database Index Kalite/Kreye/Itilize Konbinezon ALTER Statement Itilizasyon nan MySQL", ki itil ou.

Byenvini pataje lyen atik sa a:https://www.chenweiliang.com/cwl-496.html

Byenveni nan chanèl Telegram blog Chen Weiliang a pou jwenn dènye mizajou yo!

🔔 Se pou premye moun ki jwenn bonjan "ChatGPT Content Maketing AI Itilizasyon Zouti Gid" nan anyè chanèl ki pi wo a! 🌟
📚 Gid sa a gen anpil valè, 🌟Sa a se yon opòtinite ki ra, pa rate li! ⏰⌛💨
Pataje epi like siw renmen!
Pataje w ak renmen ou se motivasyon kontinyèl nou!

 

kòmantè

Adrès imèl ou pa pral pibliye. Jaden obligatwa yo te itilize * Mete etikèt sou

woule nan tèt