Mysql之索引優化案例 單錶優化 雙表優化

2021-10-08 20:41:49 字數 1436 閱讀 6417

單錶優化

建表

create

table article(

id int

unsigned

notnull

primary

keyauto_increment

, author_id int

unsigned

notnull

, category_id int

unsigned

notnull

, views int

unsigned

notnull

, comments int

unsigned

notnull

, title varchar

(255

)not

null

, content text

notnull

);

插入資料

insert

into article(

`author_id`

,`category_id`

,`views`

,`comments`

,`title`

,`content`

)values(1

,1,1

,1,'1'

,'1'),

(2,2

,2,2

,'2'

,'2'),

(1,1

,3,3

,'3'

,'3'

);

需求:查詢category_id為1且comments大於1的情況下,views最多的article_id

雙表優化

建表商品類別表

create

table class(

id int

unsigned

notnull

primary

keyauto_increment

, card int

unsigned

notnull

);

圖書表

create

table book(

bookid int

unsigned

notnull

auto_increment

primary

key,

card int

unsigned

notnull

);

驅動表的概念,mysql中指定了連線條件時,滿足查詢條件的記錄行數少的表為驅動表;

如未指定查詢條件,則掃瞄行數少的為驅動表。mysql優化器就是這麼粗暴以小表驅動大表的方式來決定執行順序的。

MySQL索引優化(索引單錶優化案例)

1 單錶查詢優化 建表sql 案例 查詢 category id 為1 且 comments 大於 1 的情況下,views 最多的 article id。執行sql 結論 很顯然,type 是 all,即最壞的情況。extra 裡還出現了 using filesort,也是最壞的情況。優化是必須的...

mysql 單 索引 mysql 單錶索引優化

建表語句 create table if not exists article id int 10 unsigned not null primary key auto increment,author id int 10 unsigned not null,category id int 10 u...

MySQL索引優化(索引三表優化案例)

建表sql phone book表建立索引 1 保證被驅動表的join欄位已經被索引 被驅動表 join 後的表為被驅動表 需要被查詢 2 left join 時,選擇小表作為驅動表,大表作為被驅動表。但是 left join 時一定是左邊是驅動表,右邊是被驅動表 3 inner join 時,my...