我们是否应该包括排序列,复合索引的主键(MySQL)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了我们是否应该包括排序列,复合索引的主键(MySQL),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2304字,纯文字阅读大概需要4分钟。
内容图文
表格(简体):
+---------------------------------------------------------------------+
| id (Primary AI) | user_id | status | type | data | ip |
+=====================================================================+
| 1 | 3 | 0 | abc | a-s-d | - |
+---------------------------------------------------------------------+
| 2 | 1 | 0 | ooo | z-z-z | - |
+---------------------------------------------------------------------+
| 3 | 3 | 0 | ooo | f-f-f | - |
+---------------------------------------------------------------------+
| 4 | 2 | 0 | abc | h-h-h | - |
+---------------------------------------------------------------------+
| 5 | 1 | 0 | abc | a-s-d | - |
+---------------------------------------------------------------------+
更多信息:
ID
is the Primary Key of this table (Auto Increment)Please Note that i have used
ID (Primary Key)
as the 3rdSeq_in_index
on new index
我已经为上述表格创建了一个综合索引
CREATE INDEX userid_type_id ON表(user_id,类型,id);
The
id
in this Index is only used for sorting.
样品查询
SELECT id, status, data, ip
FROM `table`
WHERE user_id=3 AND type='abc'
ORDER BY id DESC;
我的问题是:
>在组合索引中插入ID是一种良好的(性能)做法吗?因为它仅用于ORDER BY
>可以使用ID(主键)作为索引的第三个序列,同时它是表的第一列
>我是否根据样本查询正确选择了索引?
编辑:
我使用InnoDB
解决方法:
答案取决于您使用的引擎:
> MyISAM-将ID添加到索引可以并且可能会有所帮助
> InnoDB-主键已经是每个辅助索引的一部分,因为innodb将按主键排序的行存储在BTREE中,并且索引需要主键指向实际行-在这种情况下,如果它在索引中位于最后,则添加它是多余的(但是因此不会将其添加两次,因此不会使情况变得更糟).在某些情况下,您可能希望将其添加为非最后一个,或者您拥有多列主数据库,并且以不同的顺序向索引添加了一些列-应该没有问题,innodb会将剩余的主列附加到该索引中,但可以使用之前添加的内容而不进行重复)
所以答案:
>在InnoDB中,这是不必要的,在MyISAM中,如果您实际使用该排序,则很好,如果您不使用它,则添加它只会使该索引更大.
>表定义中的列顺序和索引中的顺序是分开的,所以可以
>是的,该索引看起来确实不错-但是您可以使用EXPLAIN进行检查,可能会有更好的性能-“ covering index”,但这要付出代价,因此,除非查询关键且性能不佳,否则它可能会过大.
内容总结
以上是互联网集市为您收集整理的我们是否应该包括排序列,复合索引的主键(MySQL)全部内容,希望文章能够帮你解决我们是否应该包括排序列,复合索引的主键(MySQL)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。