`api_id` bigint(20) NOT NULL, --api_id单独索引
PRIMARY KEY (`id`),
KEY `index_app_permission_lianhe` (`permission_id`,`app_id`) USING BTREE,
KEY `index_api_id_dange` (`api_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
主键索引 , 单独索引,组合索引使用场景及优化
表button 有3个索引,分别是:id主键 , 联合索引(permission_id,app_id) , api_id(单列索引)
button_name 无索引
查询where条件中:
主键索引:
1、主键索引与联合索引同时存在,使用主键索引
2、主键索引与单个索引同时存在,使用主键索引
结论:只要主键索引在,使用主键索引 。
联合索引 :
1、联合索引与单列索引列 同时存在,使用单列索引
2、联合索引中列顺序颠倒无影响 。
3、联合索引实行最左侧原则,即:单独查询条件中只有permission_id可以使用联合索引,单独查询条件中只有app_id不实用联合索引 。
4、如果查询条件中只有app_id,但是select 条件中有 permission_id,则也使用联合索引 。
5、select id,app_id from button where app_id=1001; 使用联合索引
6、explain select id,app_id,button_name from button where app_id=1001;不使用联合索引
结论:索引优先级:主键索引,单列索引,组合索引
联合索引中遵从最左侧列原则 。
当查询条件和返回结果中仅仅包含联合索引中索引项,也使用联合索引 。如第4条 。
当查询条件中出现联合索引中非最左侧索引列,返回结果中含义联合索引中的列或者主键则也使用联合索引 。
单个索引:
1、查询条件中有单列索引,则使用 , 无不使用 。
事例:
mysql表中一个表中可以有多个主键吗?主键只能有一个 。
但是 , 如果你想用多个‘唯一索引’(unique index),是可以有多个的 。
主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度 。
所谓的一张表多个主键 , 我们称之为联合主键 。
可以由多个列形成联合主键 , 但是主键只能有一个
【mysql联合主键怎么用 联合主键sql语句】mysql联合主键怎么用的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于联合主键sql语句、mysql联合主键怎么用的信息别忘了在本站进行查找喔 。
推荐阅读
- 直播视频怎么上传到电脑,直播视频怎么上传到电脑桌面上
- oracle归档重做日志文件,oracle归档日志保存多少天如何设置
- qq大型网络游戏,网络游戏大全列表
- vb.net返回方法 vbnet return用法
- flutter开发的软件破解,flutter防破解
- fifa14服务器,fifa online4服务器在哪
- 即时演算游戏cpu,游戏实时计算
- 三国杀小游戏java代码 c++三国杀游戏代码
- linux脚本命令单引号,linux 引号