刪除索引可以使用ALTER TABLE或DROP INDEX語句來實(shí)現(xiàn),DROP INDEX可以在ALTER TABLE內(nèi)部作為一條語句處理,其格式如下:
創(chuàng)新互聯(lián)建站專業(yè)提供服務(wù)器托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買服務(wù)器托管服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。
DROP INDEX index_name?ON?talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY
注:其中,前兩條語句是等價(jià)的,刪除掉table_name中的索引index_name。
擴(kuò)展資料:
索引的使用及注意事項(xiàng)?
EXPLAIN可以幫助開發(fā)人員分析SQL問題,explain顯示了mysql如何使用索引來處理select語句以及連接表,可以幫助選擇更好的索引和寫出更優(yōu)化的查詢語句。
使用方法,在select語句前加上Explain就可以了:Explain select * from user where id=1;
盡量避免這些不走索引的sql:
SELECT `sname` FROM `stu` WHERE `age`+10=30;-- 不會(huì)使用索引,因?yàn)樗兴饕袇⑴c了計(jì)算
SELECT `sname` FROM `stu` WHERE LEFT(`date`,4) 1990; -- 不會(huì)使用索引,因?yàn)槭褂昧撕瘮?shù)運(yùn)算,原理與上面相同
SELECT * FROM `houdunwang` WHERE `uname` LIKE'后盾%' 走索引
SELECT * FROM `houdunwang` WHERE `uname` LIKE "%后盾%" 不走索引
正則表達(dá)式不使用索引,這應(yīng)該很好理解,所以為什么在SQL中很難看到regexp關(guān)鍵字的原因。
字符串與數(shù)字比較不使用索引;
CREATE TABLE `a` (`a` char(10));
EXPLAIN SELECT * FROM `a` WHERE `a`="1" 走索引
EXPLAIN SELECT * FROM `a` WHERE `a`=1 不走索引
MYSQL索引信息存儲(chǔ)在INFORMATION_SCHEMA.STATISTICS表里,如果要批量刪除索引(主鍵除外)則可通過其構(gòu)建批量刪除sql。下面是我刪除pafss庫中所有以j_打頭的表的索引的sql。批量刪除主鍵可以通過第二個(gè)sql,但是自增列不能通過這種方式刪除。
1、SELECT?DISTINCT?(CONCAT('drop?index?',?INDEX_NAME,?'?on?',?TABLE_NAME,?';'))
FROM?INFORMATION_SCHEMA.STATISTICS?T
WHERE?T.TABLE_SCHEMA?=?'pafss'
AND?T.TABLE_NAME?LIKE?'j_%'
AND?T.INDEX_NAME??'PRIMARY';
2、SELECT??DISTINCT(concat('alert?table?',?TABLE_NAME?,'?drop?primary?key?;')),t.*
FROM?INFORMATION_SCHEMA.STATISTICS?T
WHERE?T.TABLE_SCHEMA?=?'pafss'
AND?T.TABLE_NAME?LIKE?'j_%'
AND?T.INDEX_NAME?=?'PRIMARY'
刪除主鍵時(shí)是否會(huì)刪除索引?
答案取決于索引是創(chuàng)建主鍵時(shí)自動(dòng)創(chuàng)建的,還是創(chuàng)建主鍵前手工創(chuàng)建的。
測(cè)試如下:--建表create
table
hqy_test(id
integer)
;--建索引create
(unique)index
idx_hqy_id
on
hqy_test(id)
;--加主鍵alter
table
hqy_test
add
constraint
pk_hqy_id
primary
key
(id);
select
index_name
from
user_indexes
where
index_name='IDX_HQY_ID';IDX_HQY_ID
---刪除主鍵
alter
table
hqy_test
drop
constraint
pk_hqy_id;或者:alter
table
hqy_test
drop
primary
key;
也是行的。
select
index_name
from
user_indexes
where
index_name='IDX_HQY_ID';
IDX_HQY_ID
==沒有刪除索引
--刪除索引,增加主鍵并自動(dòng)創(chuàng)建索引
drop
index
idx_hqy_id;
alter
talbe
hqy_test
add
constraint
pk_hqy_id
primary
key(id)
using
index;
select
index_name
from
user_indexes
where
index_name='PK_HQY_ID';
PK_HQY_ID
==自動(dòng)創(chuàng)建了索引
--刪除主鍵約束
alter
table
hqy_test
drop
primary
key;
select
index_name
from
user_indexes
where
index_name='PK_HQY_ID';
無
==索引被刪除了
如果刪除主鍵時(shí),希望同時(shí)刪掉索引,則應(yīng)該增加drop
index選項(xiàng),從而不管索引是否是創(chuàng)建主鍵時(shí)自動(dòng)創(chuàng)建的,即:alter
table
hqy_test
drop
primary
key
drop
index;