- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
[2]查詢和索引的優化 只有當數據庫里已經有了足夠多的測試數據時,它的性能測試結果才有實際參考價值。如果在測試數據庫里只有幾百條數據記錄,它們往往在執行完第一條查詢命令之后就被全部加載到內存里,這將使后續的查詢命令都執行得非???-不管有沒有使用索引。只有當數據庫里的記錄超過了1000條、數據總量也超過了MySQL服務器上的內存總量時,數據庫的性能測試結果才有意義。 在不確定應該在哪些數據列上創建索引的時候,人們從EXPLAINSELECT命令那里往往可以獲得一些幫助。這其實只是簡單地給一條普通的SELECT命令加一個EXPLAIN關鍵字作為前綴而已。有了這個關鍵字,MySQL將不是去執行那條SELECT命令,而是去對它進行分析。MySQL將以表格的形式把查詢的執行過程和用到的索引等信息列出來。 在EXPLAIN命令的輸出結果里,第1列是從數據庫讀取的數據表的名字,它們按被讀取的先后順序排列。type列指定了本數據表與其它數據表之間的關聯關系(JOIN)。在各種類型的關聯關系當中,效率最高的是system,然后依次是const、eq_ref、ref、range、index和All(All的意思是:對應于上一級數據表里的每一條記錄,這個數據表里的所有記錄都必須被讀取一遍——這種情況往往可以用一索引來避免)。 possible_keys數據列給出了MySQL在搜索數據記錄時可選用的各個索引。key數據列是MySQL實際選用的索引,這個索引按字節計算的長度在key_len數據列里給出。比如說,對于一個INTEGER數據列的索引,這個字節長度將是4。如果用到了復合索引,在key_len數據列里還可以看到MySQL具體使用了它的哪些部分。作為一般規律,key_len數據列里的值越小越好。 ref數據列給出了關聯關系中另一個數據表里的數據列的名字。row數據列是MySQL在執行這個查詢時預計會從這個數據表里讀出的數據行的個數。row數據列里的所有數字的乘積可以大致了解這個查詢需要處理多少組合。 最后,extra數據列提供了與JOIN操作有關的更多信息,比如說,如果MySQL在執行這個查詢時必須創建一個臨時數據表,就會在extra列看到usingtemporary字樣。 |
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP