日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql联合索引数据库查询数据会变慢_如何定位并优化慢查询SQL以及联合索引和索引多的弊端...

發(fā)布時(shí)間:2024/7/23 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql联合索引数据库查询数据会变慢_如何定位并优化慢查询SQL以及联合索引和索引多的弊端... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

以下思路均以Mysql為例,不過SQL調(diào)優(yōu)通用的

根據(jù)慢日志定位慢查詢SQL;

使用show variables like ‘%quer%’;主要查看slow_query_log,slow_query_log_file,long_query_time;這三個(gè)是主要關(guān)注和修改的變量。

show status like ‘%slow_queries%’; ——查詢慢查詢的數(shù)量。

set global slow_query_log = on; ——設(shè)置打開慢查詢?nèi)罩?#xff1b;set global long_query_time = 1; ——設(shè)置大于1s的查詢都屬于慢查詢;( 這個(gè)需要重連數(shù)據(jù)庫才能更新的);并且以上修改在重啟數(shù)據(jù)庫之后會(huì)重置成原來的設(shè)置,如果需要永久修改的話就需要到my.cmf(linux)或my.ini(windows)的配置文件到修改好對(duì)應(yīng)的值。

使用explain等工具分析SQL;

在SQL語句前使用explain執(zhí)行分析語句,優(yōu)先觀察三個(gè)字段:id,type,extra;(其他字段的作用請(qǐng)網(wǎng)上查詢);其中id越大,代表越先執(zhí)行,type為all則代表全表掃描,extra為using filesort或using temporary 都是可選優(yōu)化的。

修改SQL或者盡量讓SQL走索引。

創(chuàng)建聯(lián)合索引

建表時(shí):

CREATE TABLE test (

‘a(chǎn)’ INT(11) NOT NULL DEFAULT ‘’,

‘b’ INT(11) NOT NULL DEFAULT ‘’,

‘c’ INT(11) NOT NULL DEFAULT ‘’,

‘d’ INT (11) UNSIGNED NOT NULL DEFAULT 0,

KEY sindex (a, b, c,‘d’)

) ENGINE = MyISAM COMMENT = ‘’;

建表后:

alert table test add INDEX sindex (a,b,c,‘d’) ;

最左匹配原則:

mysql會(huì)一直向右匹配直到遇到范圍查詢(>、5 and d=6 ,如果像上面一樣建立(a,b,c,d)聯(lián)合索引,d是用不到索引的,如果建立(a,b,d,c)的索引則都可以用到,a,b,d的順序可以任意調(diào)整;

=和in可以亂序,比如a = 1 and b = 2 and c = 3建立(a,b,c)索引可以任意順序,mysql的查詢優(yōu)化優(yōu)化器會(huì)幫你優(yōu)化成索引可以識(shí)別的形式;

成因:

mysql創(chuàng)建復(fù)合索引的規(guī)則是首先會(huì)對(duì)復(fù)合索引的最左邊,也就是索引中的第一個(gè)字段進(jìn)行排序,在第一個(gè)字段排序的基礎(chǔ)上,在對(duì)索引上第二個(gè)字段進(jìn)行排序,其實(shí)就像是實(shí)現(xiàn)類似order by 字段1,字段2這樣的排序規(guī)則,那么第一個(gè)字段是絕對(duì)有序的,而第二個(gè)字段就是無序的了,因此一般情況下直接只用第二個(gè)字段判斷是用不到索引的,這就是為什么mysql要強(qiáng)調(diào)聯(lián)合索引最左匹配原則的原因。

索引是越多越好么

答案是否定的

數(shù)據(jù)量小的表不需要建立索引,建立會(huì)增加額外的索引開銷

數(shù)據(jù)變更需要維護(hù)索引,意味著更多的索引意味著更多的維護(hù)成本

更多的索引也需要跟多的存儲(chǔ)空間

總結(jié)

以上是生活随笔為你收集整理的mysql联合索引数据库查询数据会变慢_如何定位并优化慢查询SQL以及联合索引和索引多的弊端...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。