大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
表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中,索引是一种特殊的数据库结构,由数据表中的一列或多列组合而成,可以用来快速查询数据表中有某一特定值的记录。
通过索引,查询数据时不用读完记录的所有信息,而只是查询索引列即可。
通过索引,查询数据时不用读完记录的所有信息,而只是查询索引列。否则,数据库系统将读取每条记录的所有信息进行匹配。
可以把索引比作新华字典的音序表。例如,要查“库”字,如果不使用音序,就需要从字典的 400 页中逐页来找。但是,如果提取拼音出来,构成音序表,就只需要从 10 多页的音序表中直接查找。这样就可以大大节省时间。
因此,使用索引可以很大程度上提高数据库的查询速度,还有效的提高了数据库系统的性能。
索引的优缺点
索引有其明显的优势,也有其不可避免的缺点。
优点
索引的优点如下:
1、通过创建唯一索引可以保证数据库表中每一行数据的唯一性。
2、可以给所有的 MySQL 列类型设置索引。
3、可以大大加快数据的查询速度,这是使用索引最主要的原因。
4、在实现数据的参考完整性方面可以加速表与表之间的连接。
5、在使用分组和排序子句进行数据查询时也可以显著减少查询中分组和排序的时间
缺点
增加索引也有许多不利的方面,主要如下:
1、创建和维护索引组要耗费时间,并且随着数据量的增加所耗费的时间也会增加。
2、索引需要占磁盘空间,除了数据表占数据空间以外,每一个索引还要占一定的物理空间。如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸。
3、当对表中的数据进行增加、删除和修改的时候,索引也要动态维护,这样就降低了数据的维护速度。
使用索引时,需要综合考虑索引的优点和缺点。
CREATE [UNIQUE] INDEX index_name ON table_name(字段 [ASC|DESC]);
UNIQUE --确保所有的索引列中的值都是可以区分的。
[ASC|DESC] --在列上按指定排序创建索引。
(创建索引的准则:
1.如果表里有几百行记录则可以对其创建索引(表里的记录行数越多索引的效果就越明显)。
2.不要试图对表创建两个或三个以上的索引。
3.为频繁使用的行创建索引。
)
示例
create index i_1 on emp(empno asc);
在“索引”选项卡,只需简单地点击索引栏位来编辑。使用索引工具栏,可以创建新的、编辑或删除选定的索引栏位。
2
●
添加索引:添加一个索引到表。
●
删除索引:删除已选择的索引。
●
名编辑框:设置索引名。
3
索引包含栏位的操作:双击“栏位”或点击编辑图标打开编辑器进行编辑,从列表中选择栏位。从索引中移除栏位,以相同的方式取消勾选即可。也可以用箭头按钮来改变索引栏位排序。“子部分”编辑框用来设置栏位的键长度。
温馨提示:一些数据类型不容许由多个栏位索引,例如BLOB。
4
索引类型:定义表索引的类型。
●
NORMAL索引是最基本的索引,并没有限制,如唯一性。
●
UNIQUE索引和NORMAL索引一样,只有一个差异,即索引列的全部值必须只出现一次。
●
FULL
TEXT索引用于MySQL全文搜索。
5
索引方法:当创建索引时指定索引类型,BTREE
或
HASH。
注释:设置任何可选的文本描述当前索引。适用于
MySQL
5.5.3
或以上版本。
6
以上是MySQL
或
MariaDB
表索引的相关内容,掌握了以上知识点,对表索引便有了初步的了解。