2013-05-02 62 views
0

A VARCHAR(1000)列將包含在WHERE子句中,例如,VARCHAR上的MySQL索引(1000)

WHERE propertyValue IN ('sample, ...') 

這些值將大多是唯一的,但不保證/約束。

我想索引這個,我想知道最好的方法是什麼。我意識到像這樣索引列會使插入速度變慢。

會將該值的散列值存儲爲CHAR(64),並且索引和搜索速度會更快?我的想法是一個固定大小的值,比較適合索引。

我使用5.1和INNODB

+0

使用INDEX時,所有INSERT語句都需要更新INDEX,這可能會降低INSERT語句的速度,所以在使用VARCHAR(1000)在列上創建INDEX時應謹慎行事。根據您在本專欄中存儲的內容,在使用WHERE x IN(a,b,c)時,可能需要使用完整的INDEX,而不是部分INDEX。 – Cninroh 2013-05-02 15:10:11

回答

2

最簡單的方法將是使用局部索引:

CREATE INDEX ON [...] propertyValue(100) [...] 

只要列中第一列100個字符(在該例子中)是相當獨特的,這將足以使索引工作。