MySQL 資料庫優化

2021-09-22 16:31:55 字數 2164 閱讀 3353

1. 分表:

問題:innodb  和 myisam 的區別 ?

什麼時候用分表 什麼時候 用 redis ?

mysql 的主要優化方法有哪些?

mysql 的 主從同步如何設定?

文件:   提取密碼 : zv8r

1. 全值匹配 : 聯合索引的情況下,使用了所有的索引值 查詢。

2. 匹配左邊:按順序 索引, 缺少第乙個 索引欄位的情況下,索引將完全失效。

2. 列字首匹配:  模糊查詢時,使用字首匹配,因為 只有字首是 排序的。

3. 精準匹配 和 範圍匹配:  並存

4. 索引用於排序: 避免 檔案排序(讀入記憶體之後排序)

select * from person_info order by name, birthday, phone_number limit 10;
5.使用聯合索引進行排序注意事項:索引的順序不能顛倒。(在 where 中有 索引優化器,所以可以顛倒,此處不支援)

select * from person_info where name = 'a' order by birthday, phone_number limit 10;
6. where子句**現非排序使用到的索引列

select * from person_info where country = 'china' order by name limit 10;
7.排序列包含非同乙個索引的列

select * from person_info order by name, country limit 10;
8.排序列使用了複雜的表示式

select * from person_info order by upper(name) limit 10;
9.用於分組

select name, birthday, phone_number, count(*) from person_info group by name, birthday, phone_number
10. 查詢 帶非聚集索引 的表,需要做 回表操作:

在索引中查詢時,查詢到資料之後,會進行 順序i/o處理, 在回表操作中,每個資料的 記錄不在磁碟的連續位置,所以 要做 隨機i/o。

如果 二級索引查詢到的資料太多,需要到 聚集索引中做 隨機i/o。效率很低,不如不用 二級 + 聚集索引。

而,mysql設計中 存在乙個 索引優化器,會對查詢的工作量做統計計算操作,來判斷 是否使用 二級 + 回表操作。

select * from person_info order by name, birthday, phone_number;
select  *  通常考慮 聚集索引。 加 limit  *;限制,考慮 二級索引 + 回表操作。

11. 覆蓋索引

select name, birthday, phone_number from person_info where name > 'asa' and name < 'barlow'
為了徹底告別回表操作帶來的效能損耗,我們建議:最好在查詢列表裡只包含索引列

12. 如何挑選索引:

1. 只為用於搜尋、排序或分組的列建立索引 :出現在 where   、  group by   、 orader by 的列需要,出現在select 的不用。

2. 考慮列的基數: 可選的值,越多,越值得。

3. 索引列的型別盡量小 :  查詢會快、 占用空間 會少(主鍵的情況下,二級索引中也能節省空間)

4. 索引字串值的字首 :

create table person_info(

name varchar(100) not null,

birthday date not null,

phone_number char(11) not null,

country varchar(100) not null,

key idx_name_birthday_phone_number (name(10), birthday, phone_number)

);

mysql資料庫優化索引 mysql資料庫索引調優

一 mysql索引 1 磁碟檔案結構 innodb引擎 frm格式檔案儲存表結構,ibd格式檔案儲存索引和資料。myisam引擎 frm格式檔案儲存表結構,myi格式檔案儲存索引,myd格式檔案儲存資料 2 mysql資料庫資料範問原理 innodb btree 1 ibd檔案中主鍵構建b tree...

mysql資料庫優先 MySQL資料庫優化

1.新增索引 mysql資料庫的四類索引 index 普通索引,資料可以重複,沒有任何限制。unique 唯一索引,要求索引列的值必須唯一,但允許有空值 如果是組合索引,那麼列值的組合必須唯一。primary key 主鍵索引,是一種特殊的唯一索引,乙個表只能有乙個主鍵,不允許有空值,一般是在建立表...

mysql資料庫優化

用到啥學啥,mysql資料庫優化成了這幾天的老大難問題。瘋狂的尋找mysql優化的資料,覺得有用的不少,記錄下跟大家分享,對了,這裡僅僅是mysql資料庫本身的優化,沒有寫磁碟之類的 開始之前,介紹倆mysql的命令 show global status 檢視執行狀態的,顯示執行各種狀態值 show...