所以,我有這種有趣的需求,只在某一組行上的表上創建索引。只在mysql中的某些行上創建一個索引
這是我的表是什麼樣子:
USER:用戶ID,friendid,創建,blah0,blah1,...,blahN現在
,我想創建一個指數:
(用戶ID,friendid,創建)
但只在那些userid = friendid的行上。原因是此索引僅用於滿足WHERE子句包含「userid = friendid」的查詢。在這種情況下會出現很多行,我真的不想浪費索引上的所有額外空間。
另一種選擇是創建一個在插入/更新此表時填充的表(查詢表),並創建一個觸發器來執行此操作,但是我猜測該表上的索引意味着該數據會儲存兩次。
mysql如何存儲主鍵?我的意思是表格是在主鍵上排序的,還是按插入順序排列,PK就像一個普通的唯一索引?
我檢查了聚簇索引(http://dev.mysql.com/doc/refman/5.0/en/innodb-index-types.html),但似乎只有InnoDB支持它們。我使用MyISAM(我提到這一點,因爲我可以在查詢表中的這三個字段上創建一個聚集索引)。
我基本上是在尋找這樣的事情:
ALTER TABLE用戶添加INDEX(用戶ID,friendid,創建)其中userid = friendid
顯然,我的要求並沒有那麼有趣。 db.cs.berkeley.edu/papers/ERL-M89-17.pdf – dhruvbird 2011-02-08 21:23:11