国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

MySQL文件優(yōu)化

2009-12-16 17:22:40 9625



 [2]查詢和索引的優(yōu)化
  只有當(dāng)數(shù)據(jù)庫里已經(jīng)有了足夠多的測試數(shù)據(jù)時,它的性能測試結(jié)果才有實際參考價值。如果在測試數(shù)據(jù)庫里只有幾百條數(shù)據(jù)記錄,它們往往在執(zhí)行完第一條查詢命令之后就被全部加載到內(nèi)存里,這將使后續(xù)的查詢命令都執(zhí)行得非常快--不管有沒有使用索引。只有當(dāng)數(shù)據(jù)庫里的記錄超過了1000條、數(shù)據(jù)總量也超過了MySQL服務(wù)器上的內(nèi)存總量時,數(shù)據(jù)庫的性能測試結(jié)果才有意義。
  在不確定應(yīng)該在哪些數(shù)據(jù)列上創(chuàng)建索引的時候,人們從EXPLAINSELECT命令那里往往可以獲得一些幫助。這其實只是簡單地給一條普通的SELECT命令加一個EXPLAIN關(guān)鍵字作為前綴而已。有了這個關(guān)鍵字,MySQL將不是去執(zhí)行那條SELECT命令,而是去對它進行分析。MySQL將以表格的形式把查詢的執(zhí)行過程和用到的索引等信息列出來。
  在EXPLAIN命令的輸出結(jié)果里,第1列是從數(shù)據(jù)庫讀取的數(shù)據(jù)表的名字,它們按被讀取的先后順序排列。type列指定了本數(shù)據(jù)表與其它數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系(JOIN)。在各種類型的關(guān)聯(lián)關(guān)系當(dāng)中,效率最高的是system,然后依次是const、eq_ref、ref、range、index和All(All的意思是:對應(yīng)于上一級數(shù)據(jù)表里的每一條記錄,這個數(shù)據(jù)表里的所有記錄都必須被讀取一遍——這種情況往往可以用一索引來避免)。
  possible_keys數(shù)據(jù)列給出了MySQL在搜索數(shù)據(jù)記錄時可選用的各個索引。key數(shù)據(jù)列是MySQL實際選用的索引,這個索引按字節(jié)計算的長度在key_len數(shù)據(jù)列里給出。比如說,對于一個INTEGER數(shù)據(jù)列的索引,這個字節(jié)長度將是4。如果用到了復(fù)合索引,在key_len數(shù)據(jù)列里還可以看到MySQL具體使用了它的哪些部分。作為一般規(guī)律,key_len數(shù)據(jù)列里的值越小越好。
  ref數(shù)據(jù)列給出了關(guān)聯(lián)關(guān)系中另一個數(shù)據(jù)表里的數(shù)據(jù)列的名字。row數(shù)據(jù)列是MySQL在執(zhí)行這個查詢時預(yù)計會從這個數(shù)據(jù)表里讀出的數(shù)據(jù)行的個數(shù)。row數(shù)據(jù)列里的所有數(shù)字的乘積可以大致了解這個查詢需要處理多少組合。
  最后,extra數(shù)據(jù)列提供了與JOIN操作有關(guān)的更多信息,比如說,如果MySQL在執(zhí)行這個查詢時必須創(chuàng)建一個臨時數(shù)據(jù)表,就會在extra列看到usingtemporary字樣。


提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: