快速索引聊天SQL表

时间:2011-08-04 08:03:58

标签: mysql sql indexing

我正在构建一个MySQL表,它将保存许多一对一聊天会话的所有数据。

当插入始终是顺序插入时,对索引表的插入是否仍然很慢?

使用聊天系统,我希望频繁插入以及频繁搜索。

每个聊天会话都会跟踪自己的会话ID和最新的帖子ID。所以为了获得新帖子,我可以运行这样的查询:

SELECT * FROM chat WHERE sessionID = xxxx AND postID > xxx

有没有办法进行多维索引?看起来最快的索引方式主要是sessionID,然后是postID。

2 个答案:

答案 0 :(得分:2)

您也可以根据其他人的建议为该查询使用多列索引。

然而,多维索引,它只是在同一维度上放置两列。想象一下按姓氏,名字排序的打印电话簿。两列,但仅限一维。

您的特定查询中的重要方面是您有一个范围条件。为了获得最佳性能,重要的是首先放置具有相等条件的列,并将范围条件放在索引中,如其他评论者所建议的那样。你不需要任何多维的东西。

如果你有多个范围条件,你真的需要(想要)一个多维索引。

更多关于此事: http://use-the-index-luke.com/sql/where-clause/searching-for-ranges/greater-less-between-tuning-sql-access-filter-predicates

答案 1 :(得分:0)

您可以使用类似的内容在两列中创建索引。

    ALTER TABLE chat ADD INDEX chat_sessionID_postID_idx (sessionID ASC, postID ASC);