如何極限提高MySQL的查詢速度
我們知道數據庫最重要的就是優化。而提高查詢速度就是優化的其中一點。那麼我們如何提高MySQL的查詢速度呢?下面小編就為大家分享下吧。
在進行性能分析前,需要先定位耗時查詢。
MySQL 提供了內建的耗時查詢日誌。使用前,打開 文件,將slow_query_log 設置為”On”。 同時將 long_query_time 設置為一個對一次查詢來説比較慢的時間(秒數),比如 0.2。slow_query_log_file 設置為你想保存日誌文件的路徑。然後運行代碼,執行時間超過設定上限的查詢將會被記錄到日誌中。
一旦定位這些煩人的查詢,就可以探究慢的原因。MySQL提供了EXPLAIN關鍵字。可以與SELECT、DELETE、INSERT、REPLACE、UPDATE語句一起使用。只需要如下一樣添加到查詢開始處:
EXPLAIN SELECT , e
FROM picture
LEFT JOIN album ON m_id = ERE _id = 1;
結果是對數據訪問過程的解析。每行代表一個查詢相關的數據表:
重點是表名、使用的key、查詢執行時所掃描的行數。
這個查詢掃描了picture表2百萬行,對每個picture記錄掃描了album表2萬行。意味着,該查詢實際掃描了album表400億行。這個過程可以更高效。
索引
使用索引,可以極大提升性能。比如地址簿中的.名字。找一個名字,你可以從頭翻到尾,也可以找到相應的字符標籤頁來快速定位。
使用索引可以避免無必要的表掃描。比如在m_id上添加索引:
ALTER TABLE picture ADD INDEX(album_id);
現在執行查詢,就不會掃描整個picture列表了。首先,所有的album表會被掃描以找到屬於該用户的album,然後,使用album_id列索引快速定位對應的picture。掃描的行數減少到了20萬,比原始查詢快了317倍。
按照以下方式添加索引可以確保兩張表都能使用對應鍵:
ALTER TABLE album ADD INDEX(user_id);
這次,album表不會被全部掃描,通過user_id鍵就可以精確定位相應的album。然後這100個album被掃描後,通過album_id鍵相關的picture也可以快速找到。每張表都用到了一個鍵進行查詢性能優化,結果比原始查詢快了380倍。
但是並不意味着可以隨意添加索引,因為索引會導致寫數據庫用時增長。所以使用索引導致讀用時縮短,寫用時增長。因此,如果能提升讀性能時再添加索引。使用EXPLAIN來確認索引是否被查詢用到,沒有就刪除。
-
w7系統的本地連接在哪
本地連接是指電腦中不同網絡創建的鏈接,當創建家庭或小型辦公網絡時,運行Windows的計算機將連接到局域網(LAN)本文是小編精心編輯的w7系統的本地連接在哪,希望能幫助到你!w7系統的'本地連接在哪win7系統中的本地連接相比XP隱藏的深一些,那我們怎麼快速把他找出來了...
-
電工系統基礎知識
電工系統基礎知識是什麼?相信很多人都想知道吧?以下是小編為您整理的電工系統基礎知識相關資料,歡迎閲讀!電工系統基礎知識1、左零右火。2、三相五線制用顏色黃、綠、紅、淡藍色分別表示U、V、W、N保護接地線雙顏色(PE)。3、變壓器在運行中,變壓器各相電流不應超過...
-
計算機三級數據庫知識:數據庫在連接中常見錯誤解決方法
一、SQLServer不存在或訪問被拒絕分析:此問題最為複雜,由於錯誤發生的原因比較多,所以需要檢查很多方面。一般情況下,有幾種可能性:Server名稱或IP地址拼寫有誤。2.服務器端網絡配置有誤。3.客户端網絡配置有誤。要解決此問題,我們一般要遵循以下的步驟來一步步找出...
-
宏基u盤裝系統教程圖解
如今使用U盤為自己的個人電腦進行裝機是非常方便的,首先要準備以下工具,一個容量不低於2G的'U盤,還有自己想要安裝的系統鏡像,當然建議U盤容量越大越好,那樣我們可以方便的將系統鏡像放置在U盤內(大U盤可以放在多個鏡像,方便裝機自由選擇不同系統),以便於我們裝系統。...