mysql创建索引

day16:索引

99封情书 提交于 2019-12-05 14:18:40
索引: 索引是内部表结构,MySQL用它基于索引列的值来提供对表中记录的快速访问.它缩短了MySQL服务器搜索查询将返回记录所用的时间,从而提高了MySQL服务器的效率。 MySQL支持以下类型的索引: 主键: 此索引要求定义了该索引的列必须为表中的所用记录中的唯一值。并且,不能为null。 外键: 此索引在事务表中引用主表列的引用列上定义,以定义这些表之间的关系,确保这些表存储的数据的一致性。 唯一: 此索引在包含表中记录的唯一值的列上定义,但可以包含null值。 常规: 此索引在可以包含表中的重复值和null值的列上定义。 全文: 此索引在可以接受字符串值的列上定义。此索引的目的是提高搜索列数据中所包含字符串的速度。可以定义全文索引的列的数据类型可以为char、varchar或text.而且,这些列可以接收重复值或null值。 一、创建索引: 1、创建常规索引语法 create table 表名{ 字段名 字段类型(字段长度) 约束, ... 字段名 字段类型(字段长度) 约束, index 索引名(字段名) } 例如:在创建demo1表时给dname添加普通索引 create table demo1( did int primary key, dname varchar(55) not null, dage int not null, index dname_index

MYSQL笔记-索引

巧了我就是萌 提交于 2019-12-05 14:17:43
1.索引 作用: - 约束 - 加速查找 索引分类(约束): - 普通索引:加速查找 - 主键索引:加速查找 + 不能为空 + 不能重复 - 唯一索引:加速查找 + 不能重复 - 联合索引(多列) : - 联合主键索引 - 联合唯一索引 - 联合普通索引 索引分类(加速查找): hash索引: 索引表存储(哈希值的顺序和数据表中的数据顺序不相同): 1.所有索引列数据转换成的哈希值 2.索引列数据的内存地址 hash索引优点: 查找单个值快 查找范围值慢 btree索引:二叉树(innodb) 二叉树存储: 先将索引列数据转化成数字,每个二叉树节点存储一个数字及索引列数据的地址, 二叉树节点的数字与子节点的数字有顺序关系(左子节点数字小于父节点,有子节点数字大于父节点) hash索引优点: 查找单个值慢 查找范围值快 建立索引: - a.额外的文件保存特殊的数据结构 - b.查询加快,插入更新删除相对也会变慢 - c.命中索引(此处email列建立了索引) select * from userinfo where email = 'asdf'; # 由于未命中索引,查询速度慢 select * from userinfo where email like 'asdf'; 普通索引: - create index 索引名称 on 表名(列名) - drop index 索引名称 on

图解Elasticsearch的核心概念

穿精又带淫゛_ 提交于 2019-12-05 13:37:56
摘自: https://www.cnblogs.com/flyrock/p/11918620.html 图解Elasticsearch的核心概念 本文讲解大纲,分8个核心概念讲解说明: NRT Cluster Node Document&Field Index Type Shard Replica Near Realtime(NRT)近实时 Elasticsearch的核心优势就是(Near Real Time NRT)近乎实时,我们称之为近实时。 NRT有两个意思,下面举例说明下: 从写入索引数据到数据可以被搜索到有一个小延迟(大概1秒); 举个例子:电商平台新上架一个新商品,1秒后用户就可搜索到这个商品信息,这就是近实时。 基于Elasticsearch执行搜索和分析可以达到秒级查询 也举个例子说明,比如我现在想查询我在淘宝,最近一年都买过几件商品,总共花了多少钱,最贵的商品多少钱,哪个月买到东西最多,什么类型的商品买的最多这样的信息,如果淘宝说,你要等待10分钟才能出结果,你是不是很崩溃,这个延迟的时间就不是近实时,如果淘宝可以秒级别返回给你,就是近实时了。 下面画一个图,解释下三个基本概念的 Cluster:集群 包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常

神奇的 SQL 之 MySQL 性能分析神器 → EXPLAIN,SQL 起飞的基石!

孤街醉人 提交于 2019-12-05 13:36:43
前言   开心一刻     某人养了一头猪,烦了想放生,可是猪认识回家的路,放生几次它都自己回来了。一日,这个人想了个狠办法,开车带着猪转了好多路进山区放生,放生后又各种打转,然后掏出电话给家里人打了个电话,问道:“猪回去了吗?”,家里人:“早回来了,你在哪了,怎么还没回来?”,他大怒道:“让它来接我,我特么迷路了!!!” 还不如我了 背景   某一天,楼主打完上班卡,坐在工位逛园子的时候,右下角的 QQ 闪了起来,而且还是个美女头像!我又惊又喜,脑中闪过我所认识的可能联系我的女性,得出个结论:她们这会不可能联系我呀,图像也没映象,到底是谁了?打开聊天窗口聊了起来   她:您好,我是公司客服某某某,请问 xxx后台 是您负责的吗?   我:您好,是我负责的,有什么问题吗?   她:我发现 xxx 页面点查询后,一直是 加载中... ,数据一直出不来,能帮忙看看吗?   我:是不是您的姿势不对?   她:我就 xxx,然后点查询   我:骚等下,我试试,确实有点慢,很长时间才能出来   她:是的,太慢了,出不来,都急死我了,能快点吗?   我:肯定能、必须能!您觉得什么速度让您觉得最舒服?   她:越快越好吧   我:呃...,是吗,我先看看是什么问题,处理好了告诉您,保证让您觉得舒服!   她:好的,谢谢!   公司没有专门的搜索服务,都是直接从 MySQL 查询

mysql学习的笔记A

拥有回忆 提交于 2019-12-05 12:32:55
Mysql 和 SQL 的语法差不多是一样的,分为以下几个大类。 1、 数据定义语言 (DDL):create , alter ,drop 等 2、 数据操作语言 (DML): 如插入,修改,删除等 3、 数据控制语言 (DCL):grant , revoke 等 我们通过控制台的 mysql 进行数据库操作, mysql 语句的结束符是 ';' 当我们进入到 mysql 的控制台之后,可以查看有几个数据库 数据库操作: 显示所有数据库: show databases ; 删除数据库: drop databases dbname ; 创建数据库: create database [if not exists] dbname ; 切换数据库: use dbname ; 表操作: 显示当前使用数据库所有的表对象: show tables; 显示表结构: desc tablename ; (desc --> describe) 创建一张表: create table student( uid int, uname varchar(20), uscore float ) ; 子查询的建表方式:注意,新表的列名要与子查询的列明要对应,类型也要一样。 create table somestudents( uid int , uname varchat(20) ) as select uid

MySQL学习笔记一

倾然丶 夕夏残阳落幕 提交于 2019-12-05 12:27:57
MySQL 学习笔记 一 一、数据库简单介绍 1、 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系统中,关系型数据库使用最为广泛。面向对象数据库则是由面向对象语言催生的新型数据库,目前的一些数据库系统,如:SQL Server 2005、Oracle10g等都开始增加面向对象的特性。 二、常用基本 SQL 语句 / 语法 Ø SQL 语句基础理论 SQL是操作和检索关系型数据库的标准语言,标准SQL语句可用于操作然后关系型数据库。 标准的 SQL 语句通常划分为以下类型: 查询语句: 主要由于select关键字完成,查询语句是SQL语句中最复杂,功能最丰富的语句。 DML (Data Munipulation Language,数据操作语言)语句,这组DML语句修改后数据将保持较好的一致性;操作表的语句,如插入、修改、删除等; DDL (Data Definition Language,数据定义语言)语句,操作数据对象的语言,有create、alter、drop。 DCL (Data Control Language,数据控制语言)语句,主要有grant、revoke语句。 事务控制语句: 主要有commit、rollback和savepoint三个关键字完成 DDL 语句

mysql使用语法

青春壹個敷衍的年華 提交于 2019-12-05 12:27:32
一、数据库简单介绍 1、 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系统中,关系型数据库使用最为广泛。面向对象数据库则是由面向对象语言催生的新型数据库,目前的一些数据库系统,如:SQL Server 2005、Oracle10g等都开始增加面向对象的特性。 二、常用基本SQL语句/语法 Ø SQL语句基础理论 SQL是操作和检索关系型数据库的标准语言,标准SQL语句可用于操作然后关系型数据库。 标准的SQL语句通常划分为以下类型: 查询语句: 主要由于select关键字完成,查询语句是SQL语句中最复杂,功能最丰富的语句。 DML (Data Munipulation Language,数据操作语言)语句,这组DML语句修改后数据将保持较好的一致性;操作表的语句,如插入、修改、删除等; DDL (Data Definition Language,数据定义语言)语句,操作数据对象的语言,有create、alter、drop。 DCL (Data Control Language,数据控制语言)语句,主要有grant、revoke语句。 事务控制语句: 主要有commit、rollback和savepoint三个关键字完成 DDL语句 DDL语句是操作数据库对象的语句

MySQL学习笔记之DDL(Data Definition Languages)语句

馋奶兔 提交于 2019-12-05 12:17:25
1. DDL概念 DDL:数据定义语言,定义了不同的数据段、数据库、表、列、索引等数据库对象。就是对数据库内部的对象进行创建、删除、修改等操作的语言。常用的语句关键字主要包括create、drop、alter。 2. 登录数据库系统 1)启动MySQL服务器后,输入以下命令连接MySQL服务器 -h:host(主机名) -u:username(用户名) -p:password(密码) 2)连接MySQL后的界面 3. 查看现有的数据库 1)`show databases` 刚安装好的MySQL中都有4个数据库,都是安装MySQL时系统自动创建的,其各自功能如下: information_scheme:主要存储了系统中的一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息、分区信息等。 cluster:存储了系统的集群信息。 mysql:存储了系统的用户权限信息。 test:系统自动创建的测试数据库,任何用户都可以使用。 4. 创建数据库 1)CREATE DATABASE dbname 注:如果存在的话就会报错。 避免报错的话可以: create database if not exists testdb 2)结果 show databases 5. 删除数据库 `drop database dbname;` ![在这里插入图片描述](https://img-blog

MySQL学习笔记:高级篇

橙三吉。 提交于 2019-12-05 11:59:18
1. 存储引擎 1.1 InnoDB表引擎 1.2 MyISAM表引擎 1.3 其他的表引擎 2. 索引 2.1 索引对性能的影响 2.2 索引的使用场景 2.3 索引的类型 2.4 MySQL索引的创建原则 2.5 MySQL索引的注意事项 3. 查询优化 3.1 查找分析SQL查询慢的原因 3.2 优化查询过程中的数据访问 3.3 优化长难的查询语句 3.4 优化特定类型的查询语句 4. MySQL高可扩展和高可用 4.1 分区表的原理 4.2 分库分表的原理 4.2.1 水平分表 4.2.2 垂直分表 4.3 MySQL的复制原理及负载均衡 4.4 MySQL安全性 4.4.1 SQL查询的安全方案 4.4.2 MySQL的其他安全设置 引用资料 1. 存储引擎 1.1 InnoDB表引擎 默认事务型引擎,最重要最广泛的存储引擎,性能非常优秀 。数据存储在 共享表空间 ,可以通过配置分开。 对主键查询的性能高于其他类型的存储引擎 。内部做了很多优化,从磁盘读取数据时自动在内存构建hash索引, 插入数据时自动构建插入缓冲区 通过一些机制和工具支持真正的 热备份 ,支持 崩溃后的安全恢复 ,支持 行级锁 ,支持 外键 1.2 MyISAM表引擎 mysql5.5版本之前的默认存储引擎 ,拥有全文索引、压缩、空间函数。 不支持事务和行级锁 , 支持表锁 ,不支持奔溃后的安全恢复

mysql 常用dml 语句

三世轮回 提交于 2019-12-05 11:39:32
最近在准备给公司的研发培训一点mysql 知识,其实我也懂的不是太多,只能自己先学点,然后在去给他们讲,下面是自己整理的一些东西 3.1 建表 存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型) 在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。 3.1.1 mysql存储引擎 MyISAM存储引擎是Mysql中常见的存储引擎,MyISAM存储引擎是基于ISAM存储引擎发展起来的。MyISAM支持全文索引、压缩存放、空间索引(空间函数)、表级锁、延迟更新索引键。但是MyISAM不支持事务、行级锁、更无法忍受的是崩溃后不能保证完全恢复(只能手动修复) InnoDB:InnoDB表类型可以看作是对MyISAM的进一步更新产品,nnoDB是Mysql数据库的一种存储引擎。InnoDB给Mysql的表提供了 事务、回滚、崩溃修复能力、多版本并发控制的事务安全、间隙锁(可以有效的防止幻读的出现)、支持辅助索引、聚簇索引、自适应hash索引、支持热备、行级锁