mysql怎么联合主键 mysql联合主键查询

mysql 主键索引,联合索引,单列索引使用场景

表button 

公司主营业务:网站建设、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出盐都免费做网站回馈大家。

CREATE TABLE `button` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,  --主键索引

`button_name` varchar(45) NOT NULL COMMENT '功能名称',

`app_id` bigint(20) NOT NULL,

`permission_id` bigint(20) DEFAULT NULL,  -- permission_id 和 app_id 联合索引。

`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的联合主键与复合主键区别

复合主键就是指你表的主键含有一个以上的字段组成 。 例如; create table test ( name varchar(19), id number, value varchar(10), primary key (id,name) ) 上面的id和name字段组合起来就是你test表的复合主键 (若其一为单索引字段时,左边的id才会有索引) 它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性 一般情况下,主键的字段长度和字段数目要越少越好

联合主键,顾名思义就是多个主键联合形成一个主键组合,体现在联合。 (主键原则上是唯一的,别被唯一值所困扰。) 索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。 简单的例子 主键A跟主键B组成联合主键 主键A跟主键B的数据可以完全相同(困扰吧,没关系),联合就在于主键A跟主键B形成的联合主键是唯一的。

联合主键体现在多个表上,复合主键体现在一个表中的多个字段

复合主键:

请问:在MYSQL中,怎么把两个列名同时作为主键?

直接在表里就可以建,把两列都选中,先设置都不为空,然后右建设为主建.如果想要查看建多主键的语句,可以把表手动建完后,再查看建表语句.

mysql 联合主键

联合主键:把两个列看成是一个整体,这个整体是不为空,唯一,不重复

1.创建表的同时创建联合主键

语法1

语法2

2.针对已经存在表,添加联合主键

mysql联合惟一键怎么设置

如果是对多个列增加 UNIQUE 约束,通过 ADD UNIQUE KEY 处理。

mysql CREATE TABLE test_unique(

- id INT,

- name VARCHAR(10),

- value VARCHAR(10)

- );

Query OK, 0 rows affected (0.08 sec)

mysql ALTER TABLE test_unique

- ADD UNIQUE KEY(name, value);

Query OK, 0 rows affected (0.13 sec)

Records: 0 Duplicates: 0 Warnings: 0

XAMPP中的mysql数据库中如何设置联合主键

CREATE TABLE `products_description` (

`products_id` int(11) NOT NULL,

`language_id` int(11) NOT NULL default

'1',

`products_name` varchar(64) NOT NULL default

'',

`products_description` text,

`products_short_description` text,

`products_url` varchar(255) default NULL,

`products_viewed` int(5) default '0',

PRIMARY KEY (`products_id`,`language_id`),

KEY `products_name` (`products_name`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

指定primary key 时用 PRIMARY KEY (`products_id`,`language_id`),这样就能指定联合主键了


分享名称:mysql怎么联合主键 mysql联合主键查询
本文网址:http://pwwzsj.com/article/hjggsd.html