2012-01-22 84 views
0

我有很多DATE TIME列在MySQL中。日期時間的MySQL默認值,索引和主鍵

我是否應該默認爲無或0000-00-00 00:00:00

同樣在我的表我有一個主鍵是一個自動增量值。

我應該在我的查詢WHERE子句中出現的所有列上添加索引嗎?

建議在PRIMARY鍵上設置外鍵,它會加快我的mysql JOINS

回答

2

我是否應該默認爲無或0000-00-00 00:00:00

如果 「無日期」 是可以接受的,則使用NULL。將日期時間設置爲零意味着您需要檢查而不是NULL,但檢查速度會變慢,並且浪費空間/帶寬來存儲/檢索它。

我應該在他們出現在我的查詢中的所有列上添加索引 WHERE子句?

不,只將索引添加到具有最多唯一值的列中。我不知道MySQL的查詢規劃器是否比以前更好,但是通過確保這些列首先出現在WHERE子句中,您也可以獲得更好的性能。原因在於,一旦您將查詢結果限制爲只有一個where子句的少量行,就可以使用線性掃描對其餘子句進行快速檢查,因爲它們可以使用索引,因此冗餘索引只是佔用磁盤和(尤其重要的)RAM。

是否建議在PRIMARY鍵上設置外鍵,將 加快我的mysql連接?

不,外鍵的目的是對數據施加有效性約束,與查詢性能無關。話雖如此,你應該儘可能使用外鍵,因爲他們提供的保證讓管理你的數據變得更容易。

+0

很感謝,這讓事情變得更加清晰! – cgwebprojects