數據庫--單表優化案例

首先創建數據表:

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) UNSIGNED NOT NULL,
-> views INT(10) UNSIGNED NOT NULL,
-> comments INT(10)UNSIGNED NOT NULL,
-> title VARCHAR(255) NOT NULL,
-> content TEXT NOT NULL
-> );

插入數據:

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’);

結果如下:
在這裏插入圖片描述

需要優化的案例如下:

在這裏插入圖片描述
可能會得到如下SQL:

SELECT author_id FROM article WHERE category_id=1 AND
comments>1 ORDER BY views DESC LIMIT 0,1 ;

結果如下:
在這裏插入圖片描述
表示可以得到想要的結果,但是我整的是SQL優化,先看看這樣做的效果如何!

第一步,先用EXPLAIN查看效果。

在這裏插入圖片描述

第二步,首先解決第一個問題,爲表添加索引
CREATE INDEX idx_article_ccv on article(category_id,comments,views);

在這裏插入圖片描述

第三步,再次嘗試

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

第四步,發現這個索引不合適,刪除這個索引
DROP INDEX idx_article_ccv ON article;

在這裏插入圖片描述

第五步:因爲comments這索引使用到了範圍,這個時候繞過它,用其他兩個
CREATE INDEX idx_article_cv ON article(category_id,views);

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章