亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL數據庫優化技術之索引使用技巧總結

2024-07-24 13:10:07
字體:
來源:轉載
供稿:網友

本文實例總結了MySQL數據庫優化技術的索引用法。分享給大家供大家參考,具體如下:

這里緊接上一篇《MySQL數據庫優化技術之配置技巧總結》,進一步分析索引優化的技巧:

(七)表的優化

1. 選擇合適的數據引擎

MyISAM:適用于大量的讀操作的表

InnoDB:適用于大量的寫讀作的表

2.選擇合適的列類型

使用 SELECT * FROM TB_TEST PROCEDURE ANALYSE()可以對這個表的每一個字段進行分析,給出優化列類型建議

3.對于不保存NULL值的列使用NOT NULL,這對你想索引的列尤其重要

4.建立合適的索引

5.使用定長字段,速度比變長要快

(八)建立索引原則

1.合理使用索引

一個Table在一次query中只能使用一個索引,使用EXPLAIN語句來檢驗優化程序的操作情況

使用analyze幫助優化程序對索引的使用效果做出更準確的預測

2.索引應該創建在搜索、排序、歸組等操作所涉及的數據列上

3.盡量將索引建立在重復數據少的數據列中,唯一所以最好

例如:生日列,可以建立索引,但性別列不要建立索引

4.盡量對比較短的值進行索引

降低磁盤IO操作,索引緩沖區中可以容納更多的鍵值,提高命中率

如果對一個長的字符串建立索引,可以指定一個前綴長度

5.合理使用多列索引

如果多個條件經常需要組合起來查詢,則要使用多列索引(因為一個表一次查詢只能使用一個索引,建立多個單列索引也只能使用一個)

6.充分利用最左前綴

也就是要合理安排多列索引中各列的順序,將最常用的排在前面

7.不要建立過多的索引

只有經常應用于where,order by,group by中的字段需要建立索引.

8.利用慢查詢日志查找出慢查詢(log-slow-queries, long_query_time)

(九)充分利用索引

1.盡量比較數據類型相同的數據列

2.盡可能地讓索引列在比較表達式中獨立, WHERE mycol < 4 / 2 使用索引,而WHERE mycol * 2 < 4不使用

3.盡可能不對查詢字段加函數,

如:WHERE YEAR(date_col) < 1990改造成WHERE date_col < '1990-01-01'

WHERE TO_DAYS(date_col) - TO_DAYS(CURDATE()) < cutoff 改造成WHERE date_col < DATE_ADD(CURDATE(), INTERVAL cutoff DAY)

4.在LIKE模式的開頭不要使用通配符

5.使用straight join可以強制優化器按照FROM子句的次序來進行聯結,可以select straight join,強制所有聯結,也可以select * from a straight join b強制兩個表的順序.

6.使用force index強制使用指定的索引.如 select * from song_lib force index(song_name) order by song_name比不用force index效率高

7.盡量避免使用MySQL自動類型轉換,否則將不能使用索引.如將int型的num_col用where num_col='5'

(十)SQL語句的優化

1.創建合適的統計中間結果表,降低從大表查詢數據的幾率

2.盡量避免使用子查詢,而改用連接的方式.例如:

SELECT a.id, (SELECT MAX(created) FROM posts WHERE author_id = a.id) AS latest_postFROM authors a

可以改成:

SELECT a.id, MAX(p.created) AS latest_postFROM authors AS aINNER JOIN posts p ON (a.id = p.author_id)GROUP BY a.id
select song_id from song_lib where singer_id in(select singer_id from singer_libwhere first_char='A') limit 2000

改成:

select song_id from song_lib ainner join singer_lib b on a.singer_id=b.singer_id and first_char='A' limit 2000

3.插入判斷重復鍵時,使用ON DUPLICATE KEY UPDATE :

復制代碼 代碼如下:
insert into db_action.action_today(user_id,song_id,action_count) values(1,1,1) ON DUPLICATE KEY UPDATE action_count=action_count+1;

 

4.避免使用游標

游標的運行效率極低,可以通過增加臨時表,運用多表查詢,多表更新等方式完成任務,不要使用游標.

(十一)使用Explain分析SQL語句使用索引的情況

當你在一條SELECT語句前放上關鍵詞EXPLAIN,MySQL解釋它將如何處理SELECT,提供有關表如何聯結和以什么次序聯結的信息,借助于EXPLAIN,可以知道什么時候必須為表加入索引以得到一個使用索引來尋找記錄的更快的SELECT,你也能知道優化器是否以一個最佳次序聯結表。為了強制優化器對一個SELECT語句使用一個特定聯結次序,增加一個STRAIGHT_JOIN子句。 。

EXPLAIN命令的一般語法是:EXPLAIN <SQL命令> 如:explain select * from a inner join b on a.id=b.id

EXPLAIN的分析結果參數詳解:

1.table:這是表的名字。

2.type:連接操作的類型。

system:表中僅有一條記錄(實際應用很少只有一條資料的表)

const:表最多有一個匹配行,用于用常數值比較PRIMARY KEY或UNIQUE索引的所有部分時,

如:

select * from song_lib where song_id=2

(song_id為表的primary key)

eq_ref:對于每個來自于前面的表的行組合,從該表中用UNIQUE或PRIMARY KEY的索引讀取一行,

如:

復制代碼 代碼如下:
select * from song_lib a inner join singer_lib b on a.singer_id=b.singer_id

(b的type值為eq_ref)

 

ref:對于每個來自于前面的表的行組合,從該表中用非UNIQUE或PRIMARY KEY的索引讀取一行

如:

復制代碼 代碼如下:
select * from song_lib a inner join singer_lib b on a.singer_name=b.singer_name


復制代碼 代碼如下:
select * from singer_lib b where singer_name='ccc'
(b的type值為ref,因為b.singer_name是普通索引)

 

ref_or_null:該聯接類型如同ref,但是添加了MySQL可以專門搜索包含NULL值的行,

如:

復制代碼 代碼如下:
select * from singer_lib where singer_name='ccc' or singer_name is null

 

index_merge:該聯接類型表示使用了索引合并優化方法

Key: 它顯示了MySQL實際使用的索引的名字。如果它為空(或NULL),則MySQL不使用索引。

key_len: 索引中被使用部分的長度,以字節計。

3.ref:ref列顯示使用哪個列或常數與key一起從表中選擇行

4.rows: MySQL所認為的它在找到正確的結果之前必須掃描的記錄數。顯然,這里最理想的數字就是1。

5.Extra:這里可能出現許多不同的選項,其中大多數將對查詢產生負面影響。一般有:

using where:表示使用了where條件

using filesort: 表示使用了文件排序,也就是使用了order by子句,并且沒有用到order by 里字段的索引,從而需要額外的排序開銷,所以如果出現using filesort就表示排序的效率很低,需要進行優化,比如采用強制索引的方法(force index)


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲片国产一区一级在线观看| 中文字幕少妇一区二区三区| 国产精品九九久久久久久久| 一道本无吗dⅴd在线播放一区| 国产精品综合网站| 91夜夜揉人人捏人人添红杏| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美日韩精品二区| 亚洲精品自拍偷拍| 国产主播在线一区| 久久精品一本久久99精品| 国产精品1区2区在线观看| 亚洲天堂色网站| 国产999精品久久久| 国产亚洲欧美日韩一区二区| 亚洲国产天堂久久综合| 欧美大码xxxx| 国产不卡视频在线| 色久欧美在线视频观看| 日韩中文字幕视频在线| 国产精品视频xxx| 亚洲精品网址在线观看| 中文字幕亚洲欧美日韩高清| 亚洲第一区在线| 亚洲精品视频在线播放| 国产精品狼人色视频一区| 国产一区二区日韩| 日韩大陆欧美高清视频区| 国产va免费精品高清在线观看| 精品中文视频在线| 亚洲欧美中文字幕| 国产综合福利在线| 国产在线观看精品| 尤物九九久久国产精品的分类| 亚洲毛片在线观看| 日韩在线欧美在线国产在线| 在线激情影院一区| 日韩欧美在线视频免费观看| 夜色77av精品影院| 亚洲精品久久久一区二区三区| 中文字幕无线精品亚洲乱码一区| 中文字幕欧美在线| 欧美另类极品videosbestfree| 国产精品视频精品视频| 午夜精品久久久久久久99热浪潮| 日韩av中文字幕在线播放| www.国产一区| 欧美午夜激情小视频| 日本韩国欧美精品大片卡二| 中文字幕久热精品视频在线| 久久99国产精品自在自在app| 久青草国产97香蕉在线视频| 最好看的2019的中文字幕视频| 成人精品在线观看| 欧美一级高清免费播放| 欧美劲爆第一页| 日韩电影中文字幕av| 亚洲一级片在线看| 国产精品美腿一区在线看| 欧美综合激情网| 欧美巨大黑人极品精男| 亚洲女在线观看| www.国产精品一二区| 久久久99久久精品女同性| 久久天天躁夜夜躁狠狠躁2022| 美女国内精品自产拍在线播放| 97色在线观看免费视频| 在线视频国产日韩| 成人福利视频网| 7m第一福利500精品视频| 日韩美女视频免费在线观看| 自拍亚洲一区欧美另类| 欧美成人性色生活仑片| 久久久久久成人| 中文字幕在线看视频国产欧美在线看完整| 午夜精品一区二区三区在线| 国产成人精品久久久| 国产主播在线一区| 欧美日韩激情网| 欧美日本精品在线| 国产日本欧美视频| 成人黄色短视频在线观看| 91亚洲精品一区二区| 日韩**中文字幕毛片| 亚洲最大在线视频| 久久中国妇女中文字幕| 日韩精品久久久久久久玫瑰园| 97在线精品视频| 福利一区视频在线观看| 中文字幕久久精品| 国产中文字幕91| 国产午夜精品免费一区二区三区| 国产亚洲精品美女久久久久| 狠狠躁夜夜躁久久躁别揉| 精品国产91久久久久久| 日韩在线视频网| 日本久久久久亚洲中字幕| 欧美国产激情18| 精品国产乱码久久久久久虫虫漫画| 岛国av一区二区| 中文字幕亚洲一区| 亚洲综合在线播放| 欧美中在线观看| 97久久精品在线| 欧美伦理91i| xx视频.9999.com| 日韩精品电影网| 69国产精品成人在线播放| 精品久久久久久久久久| 国产mv免费观看入口亚洲| 九九热精品视频| 日韩精品免费观看| 国产视频亚洲精品| 中文字幕亚洲欧美在线| 亚洲精品资源美女情侣酒店| 北条麻妃久久精品| 日韩黄色高清视频| 俺去亚洲欧洲欧美日韩| 中文字幕自拍vr一区二区三区| 高清在线视频日韩欧美| 久久久久久国产精品久久| 国产91精品高潮白浆喷水| 国产午夜精品一区二区三区| 精品久久久久人成| 日韩欧中文字幕| 欧美亚洲国产日本| 91精品国产高清自在线| 97精品久久久| 在线视频日本亚洲性| 欧美黑人极品猛少妇色xxxxx| 久久精品视频中文字幕| 欧美肥老太性生活视频| 欧美影院在线播放| 国产伊人精品在线| 中文日韩在线视频| 尤物yw午夜国产精品视频明星| 国产美女扒开尿口久久久| 欧美日韩在线视频首页| 一本大道久久加勒比香蕉| 精品一区二区三区四区在线| 国产精品丝袜视频| 在线激情影院一区| 精品久久久久久亚洲精品| 亚洲欧洲第一视频| 91免费的视频在线播放| 国产日韩精品在线播放| 亚洲国产精品va| 伊人精品在线观看| 午夜精品99久久免费| 狠狠躁夜夜躁人人爽天天天天97| 国产综合久久久久久| 日韩精品极品视频免费观看| 国产精品久久婷婷六月丁香| 欧美在线免费视频| 日韩精品视频在线| 国产精品色悠悠| 国产精品十八以下禁看| 性色av香蕉一区二区| 亚洲精品欧美极品| 日韩电视剧免费观看网站| 97婷婷大伊香蕉精品视频| 欧美日韩在线视频观看| 97在线视频免费看| 亚洲三级 欧美三级|