1.引入
由上節課,我們把mysql效能分析的內容較為詳細的講了一下,那麼這一節課,我們就使用實際的查詢例子進行mysql資料庫的查詢索的效能調優。
2.索引單錶優化
建立資料庫表內容,並新增資料記錄
-- ----------------------------
-- table structure for book
-- ----------------------------
drop table if exists `book`;
create table `book` (
`id` int(11) not null auto_increment,
`bookname` varchar(255) default null,
`price` decimal(50,0) default null,
`author` varchar(255) default null,
`typeid` int(25) default null,
`picturepath` varchar(255) default null,
`content` varchar(255) default null,
`buytime` varchar(255) default null,
`showposition` varchar(255) default null,
`inventory` int(25) default null,
`salecount` int(25) default null,
primary key (`id`)
) engine=innodb auto_increment=17 default charset=utf8;
-- ----------------------------
-- records of book
-- ----------------------------
insert into `book` values ('8', '巴黎聖母院', '450', '維克多雨果', '1', '棧.png', '這就是乙個測試\r\n ', '2019-05-24', '1-1', '500', '201');
insert into `book` values ('9', '測試', '12', '測試內容1', '1', 'rec.jpg', '這裡是顯示測試', '2019-05-20', '1-2', '520', '23');
insert into `book` values ('10', '測試1', '13', '測試內容1', '3', 'rec.jpg', '看看決勝巔峰來表示', '2019-05-20', '1-2', '45', '12');
insert into `book` values ('11', '測試2', '45', '測試內容2', '4', 'rec.jpg', '阿斯頓發世紀東方', '2019-05-20', '1-3', '78', '23');
insert into `book` values ('14', 'mysql資料庫', '99', '張三', '14', 'rec.jpg', 'mysql資料庫作為乙個關係型資料庫', '2019-05-21', '1-c-2019', '300', '120');
insert into `book` values ('16', 'c語言從入門到精通', '788', '測試', '1', 'rec.jpg', '你好,這就是測試內容', '2019-05-24', '1-1', '500', '100');
(1).進行查詢操作
查詢:buytime為2019-05-24且**price大於100,庫存量(inventory)最多的記錄。
在沒有進行任何優化操作的情況下,我們只考慮功能的實現,我們進行查詢操作explain效果如下:
我們呢按照我們我們能夠實現的**操作,完成了這乙個功能。但是呢,我們在進行explain操作的時候發現我們的type是屬於all,也就是說是全表的掃瞄。然後我們的extra中還出現了using filesort。這樣的情況我們就需要進行優化。
①:檢視是否建立了索引內容
②:建立索引,由於我們的查詢條件是按照三個內容進行查詢的操作,那麼我們就對這三個字段建立符合索引
⑤:由於我們建立的索引idx_bpi無法解決price > 100導致的檔案內排序,所以我們把建立的索引刪除。
⑦:我們再次查詢,看效果是否會改變
在我們修改了索引以後,我們發現我們使用explain分析sql的幾個重要的內容基本已經優化到位。
雙索引 mysql mysql 雙表索引優化
1.樣例資料 version mysql 8.0.19 create table if not exists class id int 10 unsigned not null auto increment,card int 10 unsigned not null,primary key id e...
Mysql Mysql索引詳解
索引概述 mysql資料庫系統除了儲存資料之外,為了能夠提高對資料的快速訪問,mysql為此設計了索引,mysql索引是一種可以快速提高mysql高效查詢資料的一種資料結構。舉個例子索引就跟我們的書本的目錄一樣,如果一本書沒有目錄,那麼你要找想看的地方,那會是相當費勁的,只能一頁頁去翻,而資料庫的索...
索引 mysql MySql索引那些事
概述一 什麼是索引 資料庫索引,是資料庫管理系統中乙個排序的資料結構,以協助快速查詢 更新資料庫表中資料。就像我們以前用的新華字典的目錄一樣,能幫助我們快速查詢到某乙個字。二 索引的分類 分類角度索引名稱 資料結構b 樹,hash索引,r tree等 儲存層面聚簇索引,非聚簇索引 邏輯層面主鍵索引,...