MySQL性能問題理解

  備註:問題摘抄自慕課網張一勤老師

  爲什麼 group by 的效率比較低?

    group by 是將數據分組,這其中實際也會涉及到排序的操作。如果你的數據量很大,那麼,這個排序過程可能是非常慢的。所以,排序的過程會降低 SQL 語句的執行效率。

    將數據全量查出,在程序中處理,這樣好嗎?

    這樣肯定是不合適的。因爲這樣做:大數據量的傳輸很耗時、消耗機器的內存、大數據量的處理本身也非常慢。

    group by的常用優化方案

    效率低的根本原因就是因爲數據量大導致的,所以,想要做優化,核心思想就是降低數據量。可以在 group by 之前把需要過濾的數據通過 where 條件給出;給 group by 的相關字段加上索引等等。

    判斷一條數據記錄是否在一張表中

    這個判斷最高效的方式當前是判斷主鍵;如果不能通過主鍵判斷,需要 where 去查詢帶有索引的字段列;如果需要判斷的列沒有索引,mysql 是需要掃描數據記錄的,效率最低。

哪些字段類型適合加索引 ?哪些字段類型不適合加索引 ?你能解釋清楚嗎 ?

 其實,對於字符類型,也並不是絕對不能加索引的。數據庫常用的索引規範如下:

    1、表的主鍵、外鍵必須有索引;

    2、數據量超過300的表應該有索引;

    3、經常與其他表進行連接的表,在連接字段上應該建立索引;

    4、經常出現在Where子句中的字段,特別是大表的字段,應該建立索引;

    5、索引應該建在選擇性高的字段上;

    6、索引應該建在小字段上,對於大的文本字段甚至超長字段,不要建索引;

    7、複合索引的建立需要進行仔細分析;儘量考慮用單字段索引代替;

    8、頻繁進行數據操作的表,不要建立太多的索引;

    9、刪除無用的索引,避免對執行計劃造成負面影響。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章