关系型数据库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 ...
随机推荐
- <搬运> SQL语句百万数据量优化方案
一:理解sql执行顺序 在sql中,第一个被执行的是from语句,每一个步骤都会产生一个虚拟表,该表供下一个步骤查询时调用,比如语句:select top 10 column1,colum2,max( ...
- jvm性能监控(4)–JVM的监控工具Jconsole
下面主要说一下怎么JConsole远程连接springboot 项目 java \-Djava.rmi.server.hostname=192.131.149.42 \-Dcom.sun.manag ...
- python学习第一天变量命名规范和变量作用
变量的命名 python中的变量跟其他编程语言变量一样 1,由字母,下划线,数字组成 2,数字不能做变量名开头 3,变量名尽量有意义和短,,也可以驼峰,不要很low ,比如说是 中文,变量名很长 py ...
- Java反射----数组操作
1,获取数组字段 在Person类中定义了一个一维数组字段:int[] a1 = new int[]{1,2,3}; 如何通过反射技术来操作该字段? 补充:Java操作数组主要用的是Array类. @ ...
- tensorflow的阶、形状、数据类型
张量的阶.形状.数据类型 TensorFlow用张量这种数据结构来表示所有的数据.你可以把一个张量想象成一个n维的数组或列表.一个张量有一个静态类型和动态类型的维数.张量可以在图中的节点之间流通. 阶 ...
- 【记录】elastiasearch 6.4.3 版本 SearchRequestBuilder字段排序,BoolQueryBuilder
参考地址: 1:https://www.cnblogs.com/shoutn/p/8027960.html 2:https://www.jianshu.com/p/8402eb930ae7 3:htt ...
- 系统INIT 启动脚本的结构/etc/rc.d/init.d/*
- @RestController vs @Controller
package com.example.demo.controller; import java.util.HashMap; import java.util.Map; import org.spri ...
- 第十五章 Kubernetes调度器
一.简介 Scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上.听起来非常简单,但有很多要考虑的问题: ① 公平:如何保证每个节点都能被分配资源 ② ...
- Python- 【python无法更新pip】提示python.exe: No module named pip
用Anaconda安装的python 版本无法更新pip导致不能安装第三方库: 用Anaconda Prompt安装第三方库: python -m pip install --upgrade pip ...