Навъи шохиси пойгоҳи додаи MySQL/сохта/истифода комбинатсияи ALTER истифодаи изҳорот дар MySQL

MySQLНавъи индекс/эҷод/истифодаи комбо тағирот дарMySQLистифодаи баёнияи фармон

Индексҳои MySQL

Таъсиси индекси MySQL барои кори самараноки MySQL хеле муҳим аст ва индекс метавонад суръати ҷустуҷӯи MySQL-ро хеле беҳтар кунад.

Масалан, агар MySQL бо тарҳрезии оқилона ва истифодаи индексҳо як Lamborghini бошад, пас MySQL бе индексҳо ва индексҳо як сечархаи одамист.

Индекс ба шохиси яксутунӣ ва шохиси таркибӣ тақсим мешавад.Индекси яксутунӣ, яъне индекс танҳо як сутунро дар бар мегирад, ҷадвал метавонад якчанд индексҳои яксутун дошта бошад, аммо ин шохиси таркибӣ нест.Индекси таркибӣ, яъне индекс якчанд сутунҳоро дар бар мегирад.

Ҳангоми сохтани индекс, шумо бояд боварӣ ҳосил кунед, ки индекс шартест, ки ба дархости SQL татбиқ карда мешавад (умуман ҳамчун шарти банди WHERE).

Дар асл, индекс инчунин ҷадвал аст, ҷадвал майдонҳои калиди ибтидоӣ ва индексро нигоҳ медорад ва ба сабтҳои ҷадвали объект ишора мекунад.

Дар боло дар бораи манфиатҳои истифодаи индексҳо сухан меравад, аммо истифодаи аз ҳад зиёди индексҳо боиси сӯиистифода мегардад.Аз ин рӯ, индекс низ камбудиҳои худро хоҳад дошт: гарчанде ки индекс суръати дархостро хеле беҳтар мекунад, аммо он суръати навсозии ҷадвалро коҳиш медиҳад, ба монанди INSERT, UPDATE ва DELETE -и ҷадвал.Зеро ҳангоми навсозии ҷадвал MySQL на танҳо маълумотро захира мекунад, балки файли индексро низ захира мекунад.

Индекс кардани файли индекс, ки фазои дискро истеъмол мекунад.


индекси муқаррарӣ

индекс эҷод кунед

Ин нишондиҳандаи асосӣ аст, он ҳеҷ гуна маҳдудият надорад.Онро бо роҳҳои зерин сохтан мумкин аст:

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

Барои намудҳои CHAR ва VARCHAR дарозӣ метавонад аз дарозии воқеии майдон камтар бошад; барои намудҳои BLOB ва TEXT дарозӣ бояд муайян карда шавад.

Тағир додани сохтори ҷадвал (илова кардани индекс)

ALTER table tableName ADD INDEX indexName(columnName)

Ҳангоми сохтани ҷадвал бевосита муайян кунед

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

Синтаксис барои партофтани индекс

DROP INDEX [indexName] ON mytable; 

индекси беназир

Он ба индекси муқаррарии қаблӣ монанд аст, фарқият дар он аст: арзиши сутуни индекс бояд беназир бошад, аммо қиматҳои нул иҷозат дода мешаванд.Дар ҳолати индекси таркибӣ, омезиши арзишҳои сутун бояд беназир бошад.Онро бо роҳҳои зерин сохтан мумкин аст:

индекс эҷод кунед

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

Тағир додани сохтори ҷадвал

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

Ҳангоми сохтани ҷадвал бевосита муайян кунед

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

Бо истифода аз фармони ALTER индексҳоро илова ва хориҷ кунед

Чор роҳи илова кардани индекс ба ҷадвали маълумот вуҷуд дорад:

  • ALTER TABLE tbl_name ADD PRIMARY KALY (рӯйхати_сутун): Ин изҳорот калиди ибтидоиро илова мекунад, ки маънои онро дорад, ки арзишҳои индекс бояд беназир бошанд ва наметавонанд NULL бошанд.
  • ALTER TABLE tbl_name ИЛОВАИ НОМАИ НОЯБРИ индекс (рӯйхати_сутун): Қимати индекси аз ҷониби ин изҳорот сохташуда бояд беназир бошад (ба истиснои NULL, NULL метавонад якчанд маротиба пайдо шавад).
  • ALTER TABLE tbl_name ADD INDEX index_name (рӯйхати_сутун): Индекси муқаррариро илова кунед, арзиши индекс метавонад якчанд маротиба пайдо шавад.
  • ALTER TABLE tbl_name ADD FULLTEXT index_name (рӯйхати_сутун):Изҳорот индексро ҳамчун FULLTEXT барои индексатсияи пурраи матн муайян мекунад.

Мисоли зерин барои илова кардани индекс ба ҷадвал аст.

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

Шумо инчунин метавонед банди DROP-ро дар фармони ALTER барои партофтани индексҳо истифода баред.Барои партофтани индекс мисоли зеринро санҷед:

mysql> ALTER TABLE testalter_tbl DROP INDEX c;

Бо истифода аз фармони ALTER калидҳои ибтидоиро илова ва хориҷ кунед

Калиди ибтидоӣ метавонад танҳо дар як сутун амал кунад.Ҳангоми илова кардани индекси калиди ибтидоӣ, шумо бояд боварӣ ҳосил кунед, ки калиди ибтидоӣ ба таври нобаёнӣ NULL нест (НЕ NULL).Мисолҳо чунинанд:

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

Шумо инчунин метавонед калиди ибтидоиро бо фармони ALTER нест кунед:

mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;

Ҳангоми партофтани калиди ибтидоӣ ба шумо танҳо лозим аст, ки КАЛИДИ ПРАЙМАРИРО муайян кунед, аммо ҳангоми партофтани индекс шумо бояд номи индексро донед.


нишон додани маълумоти индекс

Шумо метавонед фармони SHOW INDEX-ро барои номбар кардани маълумоти индекси дахлдор дар ҷадвал истифода баред.Маълумоти баромадро бо иловаи \G формат кардан мумкин аст.

Мисолҳои зеринро санҷед:

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

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) муштарак "Намуди шохиси пойгоҳи додаҳои MySQL/Эҷод/Истифодаи комбинатсияи ALTER изҳороти истифода дар MySQL", ки барои шумо муфид аст.

Хуш омадед ба мубодилаи истиноди ин мақола:https://www.chenweiliang.com/cwl-496.html

Хуш омадед ба канали Telegram блоги Чен Вейлян барои гирифтани навсозиҳои охирин!

🔔 Аввалин шуда дар феҳристи болоии канал "Дастури истифодаи абзори AI-и ChatGPT Content Marketing" -ро гиред! 🌟
📚 Ин дастур дорои арзиши бузург аст, 🌟Ин як имконияти нодир аст, онро аз даст надиҳед! ⏰⌛💨
Агар ба шумо маъқул бошад, мубодила кунед ва лайк монед!
Мубодилаи шумо ва лайкҳои шумо ангезаи доимии мост!

 

发表 评论

Суроғаи почтаи электронии шумо нашр карда намешавад. 必填 项 已 用 * Нишон

ба боло ҳаракат кунед