mysql创建索引

索引整理

故事扮演 提交于 2019-12-04 18:35:53
索引科普 1.索引是存储在磁盘中的,不是存储在内存中的,索引一定会持久化磁盘 2.我们的电脑持久化存储采用磁盘,磁盘有磁道,磁道有磁头,磁头的移动是进行读取的过程,磁头移动快慢就是读取的快慢 3.由1968年P.Denning研究发现,对程序执行有以下特性 局部性原理 程序和数据访问都有聚集成群的倾向,在一个时间段内仅使用其中一小部分(空间局部性) 最近访问的程序代码和数据,再次访问可能性很大(时间局部性) 磁盘预读(为页(page)的整数倍) 页是存储器的逻辑块,操作系统往往将主存和磁盘存储分割为连续的块,这个块通常为固定大小 1968年P.Denning研究了程序执行的局部性(principle of locality),对于程序局部性原理进行研究还有Knuth(分析的一组Fortran程序)、Tanenbaum(分析操作系统的过程)、Huck(分析通用科学计算的程序)。 4.什么是索引? 预先知识 mysql整体架构 索引是帮助MySQL的进行优化的,在架构图的优化器中 存储引擎:不同的存放位置,不同的文件格式 InnoDB: 磁盘 MyISAM:磁盘 memory:内存 MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法

MySQL_基础知识

删除回忆录丶 提交于 2019-12-04 18:32:59
MySQL_基础知识 -----基础知识 1、什么是数据库? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库 2、什么是关系型数据库、主键,外键,索引分别是什么? 关系型数据库是由多张能互相联接的二维行列表格组成的数据库 主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录 外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字 在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单 3、表的链接查询方式有那些,有什么区别? 交叉连接即笛卡儿乘积,是指两个关系中所有元组的任意组合 使用内连接时,如果两个表的相关字段满足连接条件,就从这两个表中提取数据并组合成新的记录 自连接是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但可以在逻辑上分为两张表 外连接是只限制一张表中的数据必须满足连接条件,而另一张表中的数据可以不满足连接条件的连接方式 4、SQL的select语句完成的执行顺序? 1、from 子句组装来自不同数据源的数据; 2、where 子句基于指定的条件对记录行进行筛选;   3、group by

Mysql 索引操作

时光怂恿深爱的人放手 提交于 2019-12-04 13:26:47
创建索引 // 语法 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON table_name (index_col_name,...) // 实例 create unique index username_index using btree on users(username); create index email_index using btree on users(email); 这里简单介绍一下btree和hash索引的应用场景,hash索引底层数据结构是哈希表,因此在绝大多数需求为单条记录时可以选择hash索引,查询性能最快,其余大部分场景建议使用btree索引。 删除索引 ALTER TABLE table_name DROP INDEX index_name; 查看索引 show index from table_name; 来源: https://www.cnblogs.com/zenan/p/11867400.html

MySQL数据库开发的36条原则

守給你的承諾、 提交于 2019-12-04 11:33:13
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/devcloud/article/details/100173405 欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003), 验证通过后,输入关键字“加群” ,加入华为云线上技术讨论群;输入关键字“最新活动”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活动等你来撩! 前言 这些原则都是经历过实战总结而成 每一条原则背后都是血淋淋的教训 这些原则主要是针对数据库开发人员,在开发过程中务必注意 总是在灾难发生后,才想起容灾的重要性; 总是在吃过亏以后,才记得曾有人提醒过。 一、核心原则 1.尽量不在数据库做运算 俗话说:别让脚趾头想事情,那是脑瓜子的职责 作为数据库开发人员,我们应该让数据库多做她所擅长的事情: 尽量不在数据库做运算 复杂运算移到程序端CPU 尽可能简单应用MYSQL 举例: 在mysql中尽量不要使用如:md5()、Order by Rand()等这类运算函数 2.尽量控制单表数据量 大家都知道单表数据量过大后会影响数据查询效率,严重情况下会导致整个库都卡住 一般情况下,按照一年内单表数据量预估: 纯INT不超过1000W 含CHAR不超过500W 同时要尽量做好合理的分表

大数据-mysql的用法

人盡茶涼 提交于 2019-12-04 11:04:53
mysql的用法 1 #登录数据库 mysql –h localhost –u root -p; mysql –u root -p 2 #修改密码 mysqladmin -uroot -pold password new; 3 #显示数据库 show databases; 4 #显示数据表 show tables; 5 #选择数据库 use examples; 6 mysql授权访问权限 mysql -uroot -p #(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址或主机都可以连接) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root123456' WITH GRANT OPTION; FLUSH PRIVILEGES; 7 #创建数据库并设置编码utf-8 多语言 create database `examples` default character set utf8 collate utf8_general_ci; 8 #删除数据库 drop database examples; 9 #创建表 create table test( id int(10) unsigned zerofill not null auto_increment, email varchar(40) not null

MySQL 索引

牧云@^-^@ 提交于 2019-12-04 10:33:29
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。 拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。 索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。 创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。 实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。 上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。 建立索引会占用磁盘空间的索引文件。 普通索引 创建索引 这是最基本的索引,它没有任何限制。它有以下几种创建方式: CREATE INDEX indexName ON mytable(username(length)); 如果是CHAR,VARCHAR类型,length可以小于字段实际长度

MySQL的索引与事务、存储引擎

和自甴很熟 提交于 2019-12-04 10:29:00
一、索引 概念 : 在一本书中,无须阅读整本书,利用目录就可以快速查找所需信息; 书中的目录是一个词语列表,其中注明了包含各个词的页码 数据库索引 : 在数据库中,索引数据库程序无须对整个表进行扫描,就可以在其中找到所需数据; 数据库中的索引是某个表中一列或者若干列值的集合,以及物理标识这些值的数据页的逻辑指针清单 索引的作用 : 1、设置了合适的索引之后,数据库利用各种快速的定位技术,能够大大加快查询速率; 2、特别是当表很大时,或者查询涉及到多个表时,使用索引可使查询加快成千倍; 3、可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本; 4、通过创建唯一性索引保证数据表数据的唯一性; 5、可以加快表与表之间的连接; 6、在使用分组和排序时,可大大减少分组和排序时间。 索引的分类 普通索引:这是最基本的索引类型,而且它没有唯一性之类的限制 唯一性索引:这种索引和前面的"普通索引"基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一 主键索引:主键是一种唯一性索引,但它必须制定为"PRIMARY KEY" 全文索引:全文索引的类型是FULLTEXT,可以在VARCHAR或者TEXT类型的列上创建 单列索引与多列索引:索引可以是单列上创建的索引,也可以是在多列上创建的索引 创建索引的原则依据 表的主键,外键必须有索引; 数据量超过300行的表应该有索引;

MySQL性能分析之Explain

强颜欢笑 提交于 2019-12-04 09:30:22
MySQL性能分析之Explain Explain基础 关于explain命令相信大家并不陌生,具体用法和字段含义可以 参考官网 ,这里需要强调rows是核心指标,绝大部分rows小的语句执行一定很快(有例外,下面会讲到)。所以优化语句基本上都是在优化rows。 执行计划:让mysql预估执行操作(一般正确) all < index < range < index_merge < ref_or_null < ref < eq_ref < system/constid,email 慢: select * from userinfo3 where name='nick' explain select * from userinfo3 where name='nick' type: ALL(全表扫描) select * from userinfo3 limit 1; 快: select * from userinfo3 where email='nick' type: const(走索引) Explain进阶 Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。 Explain语法: explain select … from …

SQL基础知识整理

依然范特西╮ 提交于 2019-12-04 09:27:23
建议:关键字和函数名全部大写;数据库名称、表名称、字段名称全部小写;分号结尾。但是大小写语句不区分,本人讨厌大写(英语菜,不能一眼看出内容),所以全部小写。[]看情况可有可无,{}花括号的内容必须要有,|左右内容表示选其中一个 一、小知识点 1.MySQL端口号:3306 2.超级用户:root 3.退出命令:mysql>exit; mysql>quit; mysql>\q; 4.提示符,黑窗口输入命令前的提示,mysql>就是一个提示符 \D完整日期 \d当前数据库 \h服务器名称 \u当前用户 修改提示符的命令语句: prompt+空格+修改成的内容 例如:mysql>prompt \u@\h; 提示:PROMPT set to '\u@\h' 新的提示符:root@localhost (表示用户名为root,服务器名为localhost) 5. 显示当前版本号: select version(); 显示当前时间: select now(); 显示用户: select user(); 二、对数据库进行操作 1.查看当前服务器下的数据库: show { databases | schemas }; 其中几个数据库是自带的,information_schema、mysql、performance_schema、test这4个数据库是自带的 2.创建数据库 CREATE {

PHP常用单词

怎甘沉沦 提交于 2019-12-04 09:17:20
(一) 原始数据类型。 A. 四种标量类型: a) boolean (布尔型) b) integer (整型) c) float (浮点型,也称作 double ) d) string (字符串) B. 两种复合类型: a) array (数组) b) object (对象) C. 特殊类型: a) resource (资源) b) NULL (无类型) D. 伪类型 : a) mixed (混合类型) b) number (数字类型) e) callback (回调类型) (二) 常用内部函数: A. 字符串函数: f) 输出与格式化:echo print printf print_r var_dump. g) 字符串去除与填充:trim ltrim rtrim str_pad h) 字符串连接与分割:implode join explode str_split i) 字符串截取:substr strchr strrchr, j) 字符串替换:str_replace substr_replace k) 字符串长度与位置: strlen strpos strrpos l) 字符转换:strtolower strtoupper lcfirst ucfirst ucwords m) 特殊字符处理:nl2br addslashes htmlspecialchars