关系型数据库MySQL(二)_索引
优点
大大加快数据的查询速度
创建唯一性索引,保证数据库表中每一行数据的唯一性
在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间
缺点
索引需要占物理空间
当对表中的数据进行增删改的时候,索引也要进行修改,降低了数据的维护速度
使用原则
并不是索引越多越好,而是需要自己合理的使用
经常更新的表要避免有过多的索引,而经常查询的字段应该创建索引
数据量小的表最好不要使用索引(因为由于数据较少,可能查询全部数据花费的时间比遍历索引的时间还要短,索引就可能不会产生优化效果)
在相同值多的列上不要建立索引,比如在学生表的"性别"字段上只有男,女两个不同值。相反的,在一个字段上不同值较多可以建立索引。数据之间越不相同,索引速度越快。
索引的类型
普通索引, 唯一索引, 主键索引, 组合索引,全文索引
普通索引
最基本的索引,没有任何限制
直接创建索引:create index index_name on table_name(column_name);
修改表结构的方式创建:alter table table_name add index index_name(column_name);
创建表时指定索引:create table table_name(...,...,index index_name(column_name));
唯一索引
索引列中的值必须是唯一的,允许有空值
直接创建索引:create unique index index_name on table_name(column_name);
修改表结构的方式创建:alter table table_name add unique index index_name(column_name);
创建表时指定索引:create table table_name(...,...,unique index index_name(column_name));
主键索引
是唯一索引的特定类型,不允许有空值;对于主键,关系数据库会自动对其创建主键索引。使用主键索引的效率是最高的,因为主键会保证绝对唯一
创建方式:与创建表时添加主键的方式相同
组合索引
在多个字段上创建的索引
alter table table_name add index index_name(column1,column2,column3);
全文索引
主要用来查找文本中的关键字,而不是直接与索引中的值相比较,它更像是一个搜索引擎
直接创建索引:create fulltext index index_content on table_name(content);
修改表结构的方式创建:alter table table_name add fulltext index index_name(content);
创建表时指定索引:create table table_name(...,...,fulltext index index_name(content));
修改索引名称
alter index old_index_name rename to new_index_name;
删除索引
drop index index_name on product;
关系型数据库MySQL(二)_索引的更多相关文章
- 关系型数据库MySQL(四)_备份与还原
数据库备份 备份命令:mysqldump 备份一个数据库 mysqldump -h localhost -u username -p password database_name > D:\fi ...
- 关系型数据库MySQL(一)_增删改查
1.创建表单 create table product (product_id char(4) not null, product_name varchar(100) not null, sa ...
- 关系型数据库MySQL(三)_触发器
简介 用来给保证数据完整性的一种方法,经常用于加强数据的完整性: 是与表事件相关的特殊的存储过程,与存储过程的唯一区别是触发器不能执行execute语句调用,而是在用户执行SQL语句时自动触发执行 执 ...
- Hadoop生态组件Hive,Sqoop安装及Sqoop从HDFS/hive抽取数据到关系型数据库Mysql
一般Hive依赖关系型数据库Mysql,故先安装Mysql $: yum install mysql-server mysql-client [yum安装] $: /etc/init.d/mysqld ...
- MongoDB 与传统关系型数据库mysql比较
与关系型数据库相比,MongoDB的优点: 转载自 http://blog.sina.com.cn/s/blog_966e430001019s8v.html①弱一致性(最终一致),更能保证用户的访问 ...
- 数据库 MySQL进阶之索引
数据库的索引非常重要,基本面试数据库的问题都在索引上,所以这里小编整理出来,一方面为了自己复习,一方面也方便大家. 一,索引前传 在了解数据库索引之前,首先有必要了解一下数据库索引的数据结构基础,那么 ...
- Python3爬虫(九) 数据存储之关系型数据库MySQL
Infi-chu: http://www.cnblogs.com/Infi-chu/ 关系型数据库关系型数据库是基于关系模型的数据库,而关系模型是通过二维表来保存的,所以关系型数据库的存储方式就是行列 ...
- Flink RichSourceFunction应用,读关系型数据(mysql)数据写入关系型数据库(mysql)
1. 写在前面 Flink被誉为第四代大数据计算引擎组件,即可以用作基于离线分布式计算,也可以应用于实时计算.Flink的核心是转化为流进行计算.Flink三个核心:Source,Transforma ...
- 关系型数据库MySQL多实例
简介 MySQL数据库是一个中小型关系型数据库管理系统,软件开发者为瑞典MySQL AB公司.在2008年1月16号被Sun公司收购后Sun公司又被oracle公司收购.目前MySQL被广泛地应用在I ...
随机推荐
- [Linux] 006 命令格式与目录处理命令
1. 命令格式 命令 [-选项] [参数] 如,ls -la /etc 说明 个别命令使用不遵循此格式 当有多个选项时,可以写在一起 简化选项与完整选项 如,-a 为简化选项,--all 为完整选项 ...
- eclipse新建maven项目出错 pom.xml报错
问题: 1.新建项目后会提示一个这样的错 maven-compiler-plugin:3.1:compile(1 errors) maven-compiler-plugin:3.1:testCompi ...
- k8s常用笔记
安装docker // 安装docker $ yum install -y docker-ce // 开机启动 && 启动服务 $ systemctl enable docker &a ...
- Winfrom传值 分类: C# 2015-07-22 15:41 1人阅读 评论(0) 收藏
以前对WinForm窗体显示和窗体间传值了解不是很清楚 最近做了一些WinForm项目,把用到的相关知识整理如下 A.WinForm中窗体显示 显示窗体可以有以下2种方法: Form.Show ...
- 修改DbVisualizer的默认快捷键 .
修改SQL提示的步骤如下:1, 编辑dbvis.jar包下的dbvis-actions.xml文件(解压或直接修改)2, 找到以下的代码<actionidref="show-auto- ...
- elasticsearch 基础 —— 分布式文档存储原理
路由一个文档到一个分片中 当索引一个文档的时候,文档会被存储到一个主分片中. Elasticsearch 如何知道一个文档应该存放到哪个分片中呢?当我们创建文档时,它如何决定这个文档应当被存储在分片 ...
- 使用join和CountDownLatch来等待线程结束
1.join方法的实现 join只能在start()之后调用, join 某个线程A,会使当前线程B进入等待,直到线程A结束生命周期(isAlive()==false) ,或者达到给定的时间. 在此期 ...
- Linux知识-不断更新
找到使用cpu最高的进程之使用cpu最高的线程的16进制号 shell命令行: ps -eo %cpu,pid | sort -n -k1 -r |head -n 1|awk '{print$2}'| ...
- 微信小程序(1)--新建项目
这些天看了一下最近特别火的微信小程序,发现和vue大同小异. 新建项目 为方便初学者了解微信小程序的基本代码结构,在创建过程中,如果选择的本地文件夹是个空文件夹,开发者工具会提示,是否需要创建一个 q ...
- MAT in eclipse - memory analyzer
In Help > Install New Software..., enter the following update site URL: http://download.eclipse.o ...