mysql索引學習

2021-07-29 07:30:02 字數 2328 閱讀 7629

一、索引建立的三個方法:

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 或者建立了索引,但是索引失效的問題。所以要解決這...