2010-04-23 44 views
4

寫一個查詢的時候我總是想知道的一件事是,我正在寫最優化的查詢嗎?我知道一些事情,如:使用選擇場做和不做寫作mysql查詢

1),filed2代替SELECT *

2)給予適當的索引表

,但我相信還有更多的事情,應保持在因爲大多數數據庫只能增長更多,而最佳查詢將有助於執行時間。你能分享一些編寫查詢的技巧和竅門嗎?

+4

這個問題應該作出社區維基 – Axarydax 2010-04-23 08:01:28

回答

2
  • 使用正確的數據類型爲你的領域
  • 使用保留關鍵字後面剔字符(`)
  • 當有多個表時,請嘗試使用加入

資源:

參見:

20 SQL Tips

3

測試是衡量性能的最佳方法。在實時數據庫上監控您的查詢,並利用諸如slow query log之類的內容。

我也建議啓用query cache,這將給大多數典型的使用情況一個巨大的提升。

+0

呀Rikh似乎GR8,但我只是想知道如果有一個最佳的查詢和它甚至在罕見的我們的腦海中。 – nik 2010-04-23 08:09:50

1

事實上,沒有「提示」可以幫助你。
數據庫設計需要深入的知識,而不是技巧。

這些「不」的總是有「重量」。大多數此類列表都列舉了最不重要的事情,並沒有提及重要事項。您的列表例如,是如果它是美食論壇:

  1. 一定要使用刀,黑色手柄
  2. 準備好的菜,你需要選擇適當的成分。

第一個令人印象深刻,但從未在現實世界幫助。
第二個是正確的,但必須有深厚的知識支持才能做到正確。

所以,它必須是一本書,而不是技巧。來自保羅杜比奧斯的推薦。

+0

「我所要求的只是讓有能力的人對問題做出誠實的迴應,如果不能,請解釋原因。」 - Bill O'Reilly – erisco 2010-04-23 08:27:35

1

使用下面的字段不一定每個表

tablename_id(auto increment , unsigned zerofill) 
created_by(timestamp) 
tablerow_status(enum ('t','f') by default set 't') 
  1. 總是做出評論時ü在MySQL中建立一個字段(它有助於當U在phpMyAdmin搜索))
  2. alwayz照顧規範化形式
  3. 如果你正在做一些字段,這將是積極的,然後選擇無符號。
  4. 使用十進制數據類型,而不是浮在somw情況下(如打折,應該是最大的99.99%,因此使用十進制(5,2)
  5. 使用日期,時間數據類型所需whereve,不使用時間戳到處
0

還有一兩件事,我發現今天是關於COUNT(*)和COUNT(col)之間的差異

使用COUNT(*)比COUNT快(COL)這個表中緩存的行數

MyISAM表,對於InnoDB不緩存行計數,可能是沒有WHERE子句

它是慢對於MYISAM和innoDB,最好使用NOT NULL列,而不是允許使用Null的其他列。

更多細節here