索引的修改

2021-09-13 16:02:22 字數 1712 閱讀 8962

alter table table drop index indexname;  刪除索引

show index from 資料庫表名   查詢索引

alter table cx_model add unique index sc_index_name(sys_type,touch_node);(資料有可能是重複的)

alter  ignore  table cx_model add unique index sc_index_name(sys_type,touch_node);(重複的資料保留一條)

一、聯合唯一索引

專案中需要用到聯合唯一索引:

例如:有以下需求:每個人每一天只有可能產生一條記錄:處了程式約定之外,資料庫本身也可以設定:

例如:t_aa 表中有aa,bb兩個字段,如果不希望有2條一模一樣的記錄(即:aa欄位的值可以重複; bb欄位的值也可以重複,但是一條記錄(aa,bb)組合值不允許重複),需要給 t_aa 表新增多個欄位的聯合唯一索引:

alter table t_aa add unique index(aa,bb);

例如:alter table use_info add unique index agd(user_account_id,game_id,daily_date);

alter table user_info add unique key agdkey(user_account_id,game_id,daily_date);

這樣如果向表中新增相同記錄的時候,會返回一下錯誤資訊。 

但是配合insert into…on duplicate key update…來使用就不會報錯,存在相同的記錄,直接忽略。 

例:insert into unit (

id,unitsubclass,

name,

state

)values('1111','cpu','cpu','0' ) on duplicate key update       unitsubclass=values(unitsubclass),name =values(name),state =values(state)

還有一種情況就是,我們需要為以前的表 建立這個索引,有可能以前的資料中存在重複的記錄 那怎麼辦呢? 

alter ignore table t_aa add unique index(aa,bb); 

它會刪除重複的記錄(會保留一條),然後建立唯一索引,高效而且人性化。

擴充套件延伸:

檢視索引 :

show index from 資料庫表名  

alter table 資料庫add index 索引名稱(資料庫欄位名稱)primary key(主鍵索引):

alter table `table_name` add primary key ( `column` ) unique(唯一索引);

alter table table_name add unique (column) index(普通索引):

alter table `table_name` add index index_name ( `column` )

fulltext(全文索引):

alter table `table_name` add fulltext ( `column` )

多列索引:

alter table `table_name` add index index_name ( `column1`, `column2`, `column3` )

MySQL 建立索引 修改索引 刪除索引的命令語句

檢視表中已經存在 index show index from table name 建立和刪除索引 索引的建立可以在 create table 語句中進行,也可以單獨用 create index 或 alter table 來給表增加索引。刪除索引可以利用alter table 或 drop ind...

Mysql 索引的建立刪除修改

此文 1 索引作用 在索引列上,除了上面提到的有序查詢之外,資料庫利用各種各樣的快速定位技術,能夠大大提高查詢效率。特別是當資料量非常大,查詢涉及多個表時,使用索引往往能使查詢速度加快成千上萬倍。例如,有3個未索引的表t1 t2 t3,分別只包含列c1 c2 c3,每個表分別含有1000行資料組成,...

Mysql索引,建立,修改,刪除索引

建立普通索引 create table t12 id int,name varchar 10 index name show create table t12 建立唯一性索引 create table t13 id int,name varchar 20 unique index idinx id ...