ລາຍການຫົວເລື່ອງ
MySQLປະເພດດັດສະນີ/ສ້າງ/ໃຊ້ combo ປ່ຽນແປງໃນMySQLການນໍາໃຊ້ຄໍາສັ່ງຄໍາສັ່ງ
ດັດສະນີ MySQL
ການສ້າງດັດສະນີ MySQL ມີຄວາມສໍາຄັນຫຼາຍສໍາລັບການປະຕິບັດງານທີ່ມີປະສິດທິພາບຂອງ MySQL, ແລະດັດສະນີສາມາດປັບປຸງຄວາມໄວໃນການດຶງຂໍ້ມູນຂອງ MySQL ຢ່າງຫຼວງຫຼາຍ.
ຕົວຢ່າງ, ຖ້າ MySQL ທີ່ມີການອອກແບບທີ່ສົມເຫດສົມຜົນແລະການນໍາໃຊ້ດັດສະນີແມ່ນ Lamborghini, ຫຼັງຈາກນັ້ນ MySQL ທີ່ບໍ່ມີດັດສະນີແລະດັດສະນີແມ່ນສາມລໍ້ຂອງມະນຸດ.
ດັດຊະນີແບ່ງອອກເປັນດັດຊະນີຄໍລຳດຽວ ແລະ ດັດຊະນີປະສົມ.ດັດຊະນີຖັນດຽວ, ນັ້ນແມ່ນ, ດັດຊະນີມີພຽງຖັນດຽວ, ຕາຕະລາງສາມາດມີດັດຊະນີຖັນດຽວຫຼາຍ, ແຕ່ນີ້ບໍ່ແມ່ນດັດຊະນີປະສົມ.ດັດຊະນີປະສົມ, ນັ້ນແມ່ນ, ດັດຊະນີປະກອບດ້ວຍຫຼາຍຖັນ.
ເມື່ອສ້າງດັດສະນີ, ທ່ານຈໍາເປັນຕ້ອງໃຫ້ແນ່ໃຈວ່າດັດສະນີແມ່ນເງື່ອນໄຂທີ່ໃຊ້ກັບຄໍາຖາມ SQL (ໂດຍທົ່ວໄປເປັນເງື່ອນໄຂຂອງ WHERE clause).
ໃນຄວາມເປັນຈິງ, ດັດຊະນີຍັງເປັນຕາຕະລາງ, ຕາຕະລາງບັນທຶກຂໍ້ມູນຕົ້ນຕໍແລະດັດສະນີ, ແລະຊີ້ໃຫ້ເຫັນບັນທຶກຂອງຕາຕະລາງຫນ່ວຍງານ.
ຂ້າງເທິງນີ້ແມ່ນເວົ້າກ່ຽວກັບຜົນປະໂຫຍດຂອງການນໍາໃຊ້ດັດສະນີ, ແຕ່ການນໍາໃຊ້ດັດສະນີຫຼາຍເກີນໄປຈະນໍາໄປສູ່ການລ່ວງລະເມີດ.ດັ່ງນັ້ນ, ດັດຊະນີຍັງຈະມີຂໍ້ບົກຜ່ອງຂອງມັນ: ເຖິງແມ່ນວ່າດັດຊະນີຈະປັບປຸງຄວາມໄວການສອບຖາມຢ່າງຫຼວງຫຼາຍ, ມັນຈະຫຼຸດລົງຄວາມໄວໃນການປັບປຸງຕາຕະລາງເຊັ່ນ 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)) );
Syntax ເພື່ອຫຼຸດດັດຊະນີ
DROP INDEX [indexName] ON mytable;
ດັດຊະນີທີ່ເປັນເອກະລັກ
ມັນຄ້າຍຄືກັນກັບດັດສະນີທໍາມະດາທີ່ຜ່ານມາ, ຄວາມແຕກຕ່າງແມ່ນ: ມູນຄ່າຂອງຄໍລໍາດັດສະນີຕ້ອງເປັນເອກະລັກ, ແຕ່ຄ່າ null ແມ່ນອະນຸຍາດໃຫ້.ໃນກໍລະນີຂອງດັດສະນີປະສົມປະສານ, ການປະສົມປະສານຂອງຄ່າຄໍລໍາຕ້ອງເປັນເອກະລັກ.ມັນສາມາດໄດ້ຮັບການສ້າງຕັ້ງຂຶ້ນໃນວິທີການດັ່ງຕໍ່ໄປນີ້:
ສ້າງດັດສະນີ
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 KEY (column_list): ຄໍາຖະແຫຼງການນີ້ເພີ່ມລະຫັດຫຼັກ, ຊຶ່ງຫມາຍຄວາມວ່າຄ່າດັດສະນີຕ້ອງເປັນເອກະລັກແລະບໍ່ສາມາດເປັນ NULL.
- ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): ມູນຄ່າຂອງດັດຊະນີທີ່ສ້າງຂຶ້ນໂດຍຄໍາຖະແຫຼງນີ້ຕ້ອງເປັນເອກະລັກ (ຍົກເວັ້ນ NULL, NULL ອາດຈະປາກົດຫຼາຍຄັ້ງ).
- ALTER TABLE tbl_name ADD INDEX index_name (column_list): ເພີ່ມດັດຊະນີປົກກະຕິ, ມູນຄ່າດັດສະນີສາມາດປາກົດຫຼາຍຄັ້ງ.
- ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):ຄໍາຖະແຫຼງການກໍານົດດັດຊະນີເປັນ FULLTEXT ສໍາລັບການດັດສະນີຂໍ້ຄວາມເຕັມ.
ຕົວຢ່າງຕໍ່ໄປນີ້ແມ່ນການເພີ່ມດັດສະນີໃສ່ຕາຕະລາງ.
mysql> ALTER TABLE testalter_tbl ADD INDEX (c);
ທ່ານຍັງສາມາດໃຊ້ DROP clause ໃນຄໍາສັ່ງ 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;
ທ່ານພຽງແຕ່ຕ້ອງການລະບຸ PRIMARY KEY ເມື່ອລົງລະຫັດຫຼັກ, ແຕ່ເມື່ອຫຼຸດລົງດັດຊະນີ, ທ່ານຕ້ອງຮູ້ຊື່ດັດສະນີ.
ສະແດງຂໍ້ມູນດັດສະນີ
ທ່ານສາມາດນໍາໃຊ້ຄໍາສັ່ງ SHOW INDEX ເພື່ອລາຍຊື່ຂໍ້ມູນດັດສະນີທີ່ກ່ຽວຂ້ອງໃນຕາຕະລາງ.ຂໍ້ມູນຜົນຜະລິດສາມາດຖືກຈັດຮູບແບບໂດຍການເພີ່ມ \G.
ລອງໃຊ້ຕົວຢ່າງຕໍ່ໄປນີ້:
mysql> SHOW INDEX FROM table_name; \G ........
ຫວັງ Chen Weiliang Blog ( https://www.chenweiliang.com/ ) ແບ່ງປັນ "MySQL Database Index Type/Create/Use Combination ALTER Statement Usage in MySQL", ເຊິ່ງເປັນປະໂຫຍດແກ່ເຈົ້າ.
ຍິນດີຕ້ອນຮັບແບ່ງປັນການເຊື່ອມຕໍ່ຂອງບົດຄວາມນີ້:https://www.chenweiliang.com/cwl-496.html
ຍິນດີຕ້ອນຮັບສູ່ຊ່ອງ Telegram ຂອງບລັອກຂອງ Chen Weiliang ເພື່ອຮັບອັບເດດຫຼ້າສຸດ!
📚ຄູ່ມືນີ້ມີຄຸນຄ່າອັນມະຫາສານ, 🌟ນີ້ເປັນໂອກາດທີ່ຫາຍາກ, ຢ່າພາດມັນ! ⏰⌛💨
Share and like ຖ້າມັກ!
ການແບ່ງປັນແລະການຖືກໃຈຂອງທ່ານແມ່ນການຊຸກຍູ້ຢ່າງຕໍ່ເນື່ອງຂອງພວກເຮົາ!