我有一个MySQL表,除了其他属性,还有一个时间戳,一个类型和一个user_id。
所有这些都可以搜索和/或排序。
为每一个创建一个索引,还是使用全部三个或两个创建单个复合索引更好?MySQL:使3个字段的复合索引,或使3个单独的索引?
12
A
回答
8
巴勃罗的回答是正确的,但也许你不会意识到复合指数可能是合理的。
你可以有多个指标,并具有idx1(tstamp, user_id)
不会有indx2(tstamp, type)
或idx1reverse(user_id, tstamp)
等排除你......当他们涵盖了所有的查询条件
复合索引是最有用的,因此指数你建议将是最有用的
SELECT * FROM my_table WHERE tstamp = @ts1 AND user_id = @uid AND type = @type
如果你想提高这种查询的性能,你可以考虑添加一个复合索引。
索引的缺点是它减慢了所有更新操作。然而,大多数通用应用程序会做更多的选择,然后进行更新(无论是交易方式,即报表数量,特别是受影响/检索的记录数量),同时更容忍更慢的更新(用户主要判断速度该系统不是有必要更新记录的时间,而是根据检索记录所需的时间;再次YMMV和有些应用程序不能按照这些规则进行播放)。
如果您有一些方法来测试典型工作负载的数据库性能(创建一些典型的SQL脚本;独立和可重复的,或在应用程序级别创建单元测试),然后您可以客观地调整您的数据库。
编辑 也意识到可以添加和删除索引而不影响系统的功能。因此,您可以在实际使用系统的过程中稍后调整索引 - 通常您会收集并分析缓慢的SQL查询,以查找可从添加索引中受益的条件。
7
如果您要单独在这些字段上执行搜索,您可能需要单独的索引才能使查询运行得更快。
如果你有一个这样的指标:
mysql> create index my_idx on my_table(tstamp, user_id, type);
你查询的是:
mysql> select * from my_table where type = 'A';
然后my_idx
不会为你的查询有帮助和MySQL最终会做一个完整的表扫描来解决它。
相关问题
- 1. Python 3.x:使用第二个重复索引的索引
- 2. 索引一个3个整数字段的mysql表
- 3. 多个或单个复合索引
- 4. MySQL:哪个更好,单独索引或相同索引?
- 5. iOS - 3个字符串的键索引
- 6. 具有多个字段或多个索引的索引
- 7. 3个索引或单个索引与2列在SQL Server 2008中?
- 8. MySQL索引结构:多个或单个索引?
- 9. MySQL:两个布尔字段的索引
- 10. 具有多个字段的MySQL索引
- 11. 单个索引与多个字段索引
- 12. 集装箱用两个索引(或复合索引)
- 13. 3个文本字段的唯一索引
- 14. IndexOutOfBoundsException:索引:3,大小:3
- 15. MySQL中的两个单列索引与一个两列索引?
- 16. 使用索引查询时1复合索引键和单独索引键有什么区别
- 17. 使用单个连续内存块索引3维阵列
- 18. 使用单个索引项
- 19. Acts_as_ferret使用单个索引
- 20. 在MongoDB中,如果索引位于3个字段中,那么在查询2个字段时可以使用该索引吗? (第3场通配符)
- 21. 索引SQL Server复合键的各个字段
- 22. 在2个日期时间字段上的Sql复合索引
- 23. 如何使用SQL索引小字(3个字母)全文搜索?
- 24. Lucene中的多个或单个索引?
- 25. MySQL - 索引,字段顺序
- 26. MVC 3索引页与多个对象
- 27. MongoDB - 使用索引的一个集合
- 28. MySQL索引:有多个索引与拥有一个多字段密钥?
- 29. Mysql在2个字段中的唯一索引,是单个字段所需的单独索引,用于提高性能?
- 30. 我应该索引已经是复合索引一部分的单个列吗?
...并且对于诸如'select * from my_table where tstamp = @ ts1'这样的查询仍然有帮助。 – Unreason 2010-11-16 14:40:55
是的,它可能有助于查询。但是不会像那个专栏上的仅索引**那样有帮助。 – 2010-11-16 15:02:43
是的,实际上它只会像索引那样有帮助。由于指数较大这一事实可能会较慢 - 但是,如果单列的指数是有用的(即,高选择性),那么复合索引将是有用的 - mysql可能会查看更大的索引,但btree索引被组织为树,所以增加大小,加上仅需要访问树的一部分的事实,再加上I/O操作发生在块大小的事实转化为:具有相同起始列的索引对该列的条件同样有帮助。 – Unreason 2010-11-16 15:22:35