回覆列表
  • 1 # 科學史話

    語法: optimize table "表名"

    一,原始資料

    1,資料量

    2,存放在硬碟中的表文件大小

    3,檢視一下索引資訊

    索引資訊中的列的資訊說明。

    Table :表的名稱。Non_unique:如果索引不能包括重複詞,則為0。如果可以,則為1。Key_name:索引的名稱。Seq_in_index:索引中的列序列號,從1開始。Column_name:列名稱。Collation:列以什麼方式儲存在索引中。在MySQLSHOW INDEX語法中,有值’A’(升序)或NULL(無分類)。Cardinality:索引中唯一值的數目的估計值。透過執行ANALYZE TABLE或myisamchk -a可以更新。基數根據被儲存為整數的統計資料來計數,所以即使對於小型表,該值也沒有必要是精確的。基數越大,當進行聯合時,MySQL使用該索引的機會就越大。Sub_part:如果列只是被部分地編入索引,則為被編入索引的字元的數目。如果整列被編入索引,則為NULL。Packed:指示關鍵字如何被壓縮。如果沒有被壓縮,則為NULL。Null:如果列含有NULL,則含有YES。如果沒有,則為空。Index_type:儲存索引資料結構方法(BTREE, FULLTEXT, HASH, RTREE)

    我們再來看一看,索引資訊

    對比一下,這次索引查詢和上次索引查詢,裡面的資料資訊基本上是上次一次的一半,這點還是合乎常理。

    三,用optimize table來最佳化一下

    1,檢視一下.MYD,.MYI檔案的大小

    2,檢視一下索引資訊

    從以上資料我們可以得出,ad_code,ad_code_ind,from_page_url_ind等索引機會差不多都提高了85%,這樣效率提高了好多。

    四,小結

    個人是這樣理解的,當你刪除資料時,mysql並不會回收已刪除的資料所佔據的儲存空間,以及索引位。而是空在那裡,而是等待新的資料來彌補這個空缺,這樣就有一個缺少,如果一時半會,沒有資料來填補這個空缺,那這樣就太浪費資源了。所以對於寫比較頻繁的表,要定期進行optimize,一個月一次,看實際情況而定了。

  • 中秋節和大豐收的關聯?
  • 安裝CAD2007的時候需要裝一個.NET Framework ?那個是什麼,要怎麼裝,謝謝?