一.定長
- int(4):不代表只能存4個字符,只有 zerofill 時候有效,能夠看出區別,且只有在命令行下可以看出區別
- time:定長
- char(4):定長 4個字符,而不是字節 renf是四個字符 1234是四個字符
tinyint 1,2,3,4,5 與char a,b,c,d,e 相比 order by時候要快 char要考慮字符集與校對集
二.添加索引
添加唯一索引
alter table shop_admin add unique user_pass(‘username’,’password’) username,password (唯一索引,一行數據只能出現一次 ) 與別的數據相比 必須有一個不同
原數據 2 3
新行 6 3 可以
而 2 3 不可以添加聯合索引
alter table shop_admin add index user_pa(‘username’,’password’)
三.索引覆蓋(值必須要加引號,否則會不走索引)
- 索引覆蓋
select age from user where age>32 - 建立複合索引
alter table shop_admin add index user_pass_ip(adminuser,adminpass,loginip)
explain select loginip,adminuser from shop_admin where loginip='1'
會發現 using index 索引覆蓋,而沒有遵循左前綴原則
四.檢測語句
- 檢測執行時間
set profilling=on;
select *from shop_admin
show profiles;
五. 例子
索引類型
1,裏面有text 字段
select id from test order by id 更慢
select id from test order by id,ver 更快innodb 聚簇索引,主鍵索引就是掛着所有數據, id,ver葉子拖着數據少
id,ver 爲次級索引 指向主鍵值
myisam :非聚簇索引 索引指向磁盤位置 xx.myi(索引文件) xx.myd(數據文件)區分度:
select count(distinct(left(word,1))) /count(*)
alter table shop_admin add key key_4( word(4) )
統計 不重複的左面第一個字符 的數量存儲ip
①多建一列 crc32 建立索引
②或者翻轉www.baidu.com=>moc.udiab.www
六.外鍵
外鍵用於:user表爲主表 org_user表爲從表,當user表刪除一個用戶後,從表也要刪除對應的id的信息
alter table org_user add foreign key 'user_id' ('user_id') references user('id') on delete cascade on update NO ACTION