2012-12-18 103 views
1

我有一個帶有時間戳字段的mysql表。
此表上的大多數查詢將是where someIntegerIield=? and theTimestampField is null空表時間戳的mysql表索引

我應該使用時間戳字段作爲索引的一部分嗎?
或者我應該創建並維護另一個在timestamp字段爲空時將設置爲0的字段,否則爲1?

也歡迎其他替代品。

+0

我可能是錯誤的,但據因爲我知道MySQL可以**不使用索引來處理'IS NULL'條件。 –

+0

你也可能是對的。任何想法在哪裏可以驗證? – epeleg

+0

或者,我可以使用'timestamp1和timestamp2'之間的時間索引嗎? – epeleg

回答

0

是的,您可以使用索引「timestamp1和timestamp2之間的時間」。 MySQL/InnoDB中的缺省索引類型是BTREE,它也與比較一起使用(<,>之間)以及前綴。 是的,MySQL在索引條件中使用IS NULL/IS NOT NULL。 http://dev.mysql.com/doc/refman/5.5/en//is-null-optimization.html適用於某些表類型(包括InnoDB)。

如果你是在MySQL的早期版本,你可以嘗試「解釋」:它會告訴你,如果它使用一個索引或者沒有(和)爲您的查詢