1
我有一個帶有時間戳字段的mysql表。
此表上的大多數查詢將是where someIntegerIield=? and theTimestampField is null
。空表時間戳的mysql表索引
我應該使用時間戳字段作爲索引的一部分嗎?
或者我應該創建並維護另一個在timestamp字段爲空時將設置爲0的字段,否則爲1?
也歡迎其他替代品。
我有一個帶有時間戳字段的mysql表。
此表上的大多數查詢將是where someIntegerIield=? and theTimestampField is null
。空表時間戳的mysql表索引
我應該使用時間戳字段作爲索引的一部分嗎?
或者我應該創建並維護另一個在timestamp字段爲空時將設置爲0的字段,否則爲1?
也歡迎其他替代品。
是的,您可以使用索引「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的早期版本,你可以嘗試「解釋」:它會告訴你,如果它使用一個索引或者沒有(和)爲您的查詢
我可能是錯誤的,但據因爲我知道MySQL可以**不使用索引來處理'IS NULL'條件。 –
你也可能是對的。任何想法在哪裏可以驗證? – epeleg
或者,我可以使用'timestamp1和timestamp2'之間的時間索引嗎? – epeleg