真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySQL數(shù)據(jù)庫中怎么優(yōu)化索引查詢

這篇文章給大家介紹MySQL數(shù)據(jù)庫中怎么優(yōu)化索引查詢,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供青神網(wǎng)站建設(shè)、青神做網(wǎng)站、青神網(wǎng)站設(shè)計、青神網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、青神企業(yè)網(wǎng)站模板建站服務(wù),10年青神做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

問題描述:
我們要訪問的表是一個非常大的表,四千萬條記錄,id是主鍵,program_id上建了索引。
執(zhí)行一條SQL:

select * from program_access_log where program_id between 1 and 4000
這條SQL非常慢。
我們原以為處理記錄太多的原因,所以加了id限制,一次只讀五十萬條記錄

select * from program_access_log where id between 1 and 500000 and program_id between 1 and 4000
但是這條SQL仍然很慢,速度比上面一條幾乎沒有提升。
Mysql處理50萬條記錄的表,條件字段還建了索引,這條語句應(yīng)該是瞬間完成的。

問題分析:
這張表大約容量30G,服務(wù)器內(nèi)存16G,無法一次載入。就是這個造成了問題。
這條SQL有兩個條件,ID一到五十萬和Program_id一到四千,因為program_id范圍小得多,選擇它做為主要索引。
先通過索引文件找出了所有program_id在1到4000范圍里所有的id,這個過程非常快。
接下來要通過這些id找出表里的記錄,由于這些id是離散的,所以mysql對這個表的訪問不是順序讀取。
而這個表又非常大,無法一次裝入內(nèi)存,所以每訪問一條記錄mysql都要重新在磁盤上定位并把附近的記錄都載入內(nèi)存,大量的IO操作導(dǎo)致了速度的下降。

問題解決方案:
1. 以program_id為條件對表進(jìn)行分區(qū)
2. 分表處理,每張表的大小不超過內(nèi)存的大小
然而,服務(wù)器用的是mysql5.0,不支持分區(qū),而且這個表是公共表,無法在不影響其它項目的條件下修改表的結(jié)構(gòu)。
所以我們采取了第三種辦法:

select * from program_access_log where id between 1 and 500000 and program_id between 1 and 15000000
現(xiàn)在program_id的范圍遠(yuǎn)大于id的范圍,id被當(dāng)做主要索引進(jìn)行查找,由于id是主鍵,所以查找的是連續(xù)50萬條記錄,速度和訪問一個50萬條記錄的表基本一樣

關(guān)于MySQL數(shù)據(jù)庫中怎么優(yōu)化索引查詢就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


本文名稱:MySQL數(shù)據(jù)庫中怎么優(yōu)化索引查詢
網(wǎng)站地址:http://weahome.cn/article/pcsegp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部