所以,我有这种有趣的需求,只在某一组行上的表上创建索引。只在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