mysql欄位索引

2021-07-10 06:59:45 字數 3122 閱讀 6242

drop table if exists `auth_assignment`;

drop table if exists `auth_item_child`;

drop table if exists `auth_item`;

drop table if exists `auth_rule`;

create table `auth_rule`

( `name` varchar(64) not null,

`data` text,

`created_at` integer,

`updated_at` integer,

primary key (`name`)

) engine innodb;

create table `auth_item`

( `name` varchar(64) not null,

`type` integer not null,

`description` text,

`rule_name` varchar(64),

`data` text,

`created_at` integer,

`updated_at` integer,

primary key (`name`),

foreign key (`rule_name`) references `auth_rule` (`name`) on delete set null on update cascade,

key `type` (`type`)

) engine innodb;

create table `auth_item_child`

( `parent` varchar(64) not null,

`child` varchar(64) not null,

primary key (`parent`, `child`),

foreign key (`parent`) references `auth_item` (`name`) on delete cascade on update cascade,

foreign key (`child`) references `auth_item` (`name`) on delete cascade on update cascade

) engine innodb;

create table `auth_assignment`

( `item_name` varchar(64) not null,

`user_id` varchar(64) not null,

`created_at` integer,

primary key (`item_name`, `user_id`),

foreign key (`item_name`) references `auth_item` (`name`) on delete cascade on update cascade

) engine innodb;

auth_rule表沒做任何關聯,可直接插入

插入auth_item表

insert into auth_item value('item_name1',1,'item_description','rule_name1','data',0,0);

insert into auth_item value('item_name2',1,'item_description','rule_name2','data',0,0);

insert into auth_item value('item_name3',1,'item_description','rule_name3','data',0,0);

insert into auth_item value('item_name4',1,'item_description','rule_name4','data',0,0);

insert into auth_item value('item_name5',1,'item_description','rule_name5','data',0,0);

但只插成功了3條,因為auth_item表中rule_name4和rule_name5沒有在auth_rule中存在,相關語句

插入auth_item_child表

insert into auth_item_child value('item_name1','item_name2');

insert into auth_item_child value('item_name3','item_name4');

會提示第二條插入不成功

當我們修改auth_rule表時

update auth_rule set name='rule_name11' where name='rule_name1'

相關表auth_item已會發生變化

mysql欄位簡索引 MySQL中索引使用簡例

一張表最多不超過4個索引 某個欄位的值離散度越高,該字段越適合做索引的關鍵字。占用儲存空間少的字段更適合選做索引的關鍵字。較頻繁的作為where查詢條件的字段應該建立索引,分組字段或者排序字段應該建立索引,兩個表的連線字段應該建立索引。更新頻繁的字段不適合做索引,不會出現在where中的字段不應該建...

MySQL之索引 索引欄位的選取

日常在建資料表的時候,通常會在where,group by,order by等常用的字段上建立索引,當有多個字段時候,有一項原則就是該字段的去重後的值個數越多,索引建立的必要性越強。這裡建立一張資料表,有staff id和leader id兩個字段,通過explain分析可以驗證哪個欄位更適合做索引...

MySQL表字段加索引

新增普通索引 此時key型別為mul alter table table name add index column column 例如 alter table poicity add index delete flag delete flag 新增主鍵索引 primary key alter ta...