Anyè Atik
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!
📚 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!