一、索引建立的三個方法:
1、建表時增加索引create table
create table forindex (
id int auto_increment ,
name varchar(30) not null,
age tinyint,
idcard varchar(18) unique,
gender tinyint,
primary key primary_key (id),
index index_name (name)
)2、alter table add index
alter table forindex add primary key(id);新增主鍵
alter table forindex add index index_name(name);新增普通索引
alter table forindex add unique index unique_index_idcard(idcard);新增唯一索引
3、create index
這種方法無法指定主鍵
create index index_name on forindex (name);新增普通索引
create unique index unique_index_idcard on forindex (idcard);增加唯一索引
補充:bigint 從-2^63(-9223372036854775808)~2^63-1(9223372036854775807)的整型資料,8個位元組(建表時的length只是用於顯示的長度);
int從-2^31(-2,147,483,648)~2^31-1(2,147,483,647)的整型資料,4個位元組;
smallint從-2^15(-32,768)~2^15-1(32,767)的整型資料,2個位元組;
tinyint從0~255,1個位元組;
二、索引分類:
1、普通索引:最基本的索引型別,無唯一性限制建立方式如一
2、唯一索引:基本索引加上值必須唯一的限制建立方式如一
3、主鍵 :是一種唯一索引用primary key指定方式如一
4、全文索引:可在text或者varchar型別的字段上建立方式如下:
新增乙個varchar型別欄位description
※ alter table forindex add descriptionvarchar(255) ;此處如果不加(數字)無法成功
※可以在建立表的時候直接建立全文索引但是這樣效率不高
※使用alter table forindex engine=myisam(5.6版本以下innodb儲存引擎不支援全文索引)
alter table forindex add fulltext indexfulltext_description(description)
三、索引使用
1、單列索引:單列索引顧名思義就是單個欄位做單獨索引
例如:name欄位加了索引,直接使用
select *from forindex where name='n'
2、多列索引:顧名思義多列組成乙個索引
alter tableforindex add index index_multi_name_firstname(firstname,name);
alter tableforindex drop index index_name;刪除index_name索引
select *from forindex where firstname='趙' and`name`='c'; 使用索引index_multi_name_firstname
select *from forindex where firstname='趙' andage=3; 使用索引index_multi_name_firstname
select *from forindex where firstname='趙'; 使用索引index_multi_name_firstname
select *from forindex where name='c';不使用索引index_multi_name_firstname
3、可以考慮使用索引的主要有兩種型別的列:在where子句中出現的列,在join子句中出現的列;
四、索引的缺點
雖然索引能提高查詢效率,但是會降低更新的效率,並且索引也需要占用磁碟空間
MySQL索引學習
索引是幫助mysql搞笑獲取資料的資料結構,即排好序的快速查詢資料結構。優點 缺點 普通索引 基本的索引型別,值可以為空,沒有唯一性限制。唯一索引 索引列的值必須唯一,允許有空值。主鍵索引 一種唯一性索引,必須指定為primary key,乙個表只能有乙個主鍵,不允許有空值。組合索引 由多個字段建立...
mysql索引學習
空間換時間 select from student where name tom 若 name 字段沒有索引 full table scan 若 name 欄位有索引 減少scan的數目 基於某一列建立,由某一列上的資料組成。create index on students name alter t...
mysql索引怎麼學 mysql學習 索引
在平時開發過程中寫sql時,我們通常都不太關心sql的效能,只有能給查出來資料,sql的執行速度不是太慢就不會去管它了。但是開發時期的資料量往往都不是太大,很多效能問題只有在生產環境中才會發現,如 資料過多 sql關聯了太多的表,使用了太多的join 或者建立了索引,但是索引失效的問題。所以要解決這...