mysql 的簡單最佳化

來源:互聯網
上載者:User

標籤:

合理的建立索引的建議:

(1)  越小的資料類型通常更好:越小的資料類型通常在磁碟、記憶體和CPU緩衝中都需要更少的空間,處理起來更快。 

(2)  簡單的資料類型更好:整型資料比起字元,處理開銷更小,因為字串的比較更複雜。在MySQL中,應該用內建的日期和時間資料類型,而不是用字串來儲存時間;以及用整數資料型別儲存IP地址。

(3)  盡量避免NULL:應該指定列為NOT NULL,除非你想儲存NULL。在MySQL中,含有空值的列很難進行查詢最佳化,因為它們使得索引、索引的統計資訊以及比較運算更加複雜。你應該用0、一個特殊的值或者一個空串代替空值

 

這部分是關於索引和寫SQL語句時應當注意的一些瑣碎建議和注意點。

1. 當結果集只有一行資料時使用LIMIT 1

2. 避免SELECT *,始終指定你需要的列

從表中讀取越多的資料,查詢會變得更慢。他增加了磁碟需要操作的時間,還是在資料庫伺服器與WEB伺服器是獨立分開的情況下。你將會經曆非常漫長的網路延遲,僅僅是因為資料不必要的在伺服器之間傳輸。

3. 使用串連(JOIN)來代替子查詢(Sub-Queries)

       串連(JOIN).. 之所以更有效率一些,是因為MySQL不需要在記憶體中建立暫存資料表來完成這個邏輯上的需要兩個步驟的查詢工作。

4. 使用ENUMCHAR 而不是VARCHAR,使用合理的欄位屬性長度

5. 儘可能的使用NOT NULL

6. 固定長度的表會更快

7. 拆分大的DELETE INSERT 語句

8. 查詢的列越小越快

 

 Where條件

在查詢中,WHERE條件也是一個比較重要的因素,盡量少並且是合理的where條件是很重要的,盡量在多個條件的時候,把會提取盡量少資料量的條件放在前面,減少後一個where條件的查詢時間。

有些where條件會導致索引無效:

Ø where子句的查詢條件裡有!=,MySQL將無法使用索引。

Ø where子句使用了Mysql函數的時候,索引將無效,比如:select * from tb where left(name, 4) = ‘xxx’

Ø 使用LIKE進行搜尋匹配的時候,這樣索引是有效:select * from tbl1 where name like ‘xxx%’,而like ‘%xxx%’ 時索引無效

mysql 的簡單最佳化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.