mysql创建索引

DBA学习参考绝佳资料

爱⌒轻易说出口 提交于 2020-01-04 00:14:52
原文来自: pursuer.chen 原文地址:https://www.cnblogs.com/chenmh/default.aspx?page=1 [置顶]MongoDB 文章目录 2018-02-09 10:27 by pursuer.chen, 144 阅读, 收藏 , 编辑 基础: MongoDB入门系列(一):基础概念和安装 MongoDB入门系列(二):Insert、Update、Delete、Drop MongoDB入门系列(三):查询(SELECT) MongoDB入门系列(四):权限管理 MongoDB入门系列(五):聚合操作 MongoDB 错误汇总 MongoDB 启动配置参数 集群: MongoDB 复制机制 MongoDB 搭建可复制群集 MongoDB 副本集管理 MongoDB 搭建分片集群 MongoDB 分片管理 MongoDB 分片键的选择与案例 OPS: 0 Comment [置顶]SQL Server 文章目录 2017-06-02 17:27 by pursuer.chen, 335 阅读, 收藏 , 编辑 SQL Server系列: 高可用方案: 搭建域服务器和DNS 搭建Windows故障转移群集 SQL Server Alwayson概念总结 SQL Server AlwaysOn搭建 SQL Server

数据库SQL优化

北战南征 提交于 2020-01-03 21:23:00
本文链接: https://blog.csdn.net/jianzhang11/article/details/102867120 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长 应用的日志出现超时等错误 可以使用sar命令,top命令查看当前系统状态。 也可以通过Prometheus、Grafana等监控工具观察系统状态。(感兴趣的可以翻看我之前的文章)640?wx_fmt=png SQL语句表象 冗长 执行时间过长 从全表扫描获取数据 执行计划中的rows、cost很大 冗长的SQL都好理解,一段SQL太长阅读性肯定会差,而且出现问题的频率肯定会更高。更进一步判断SQL问题就得从执行计划入手,如下所示:640?wx_fmt=png 执行计划告诉我们本次查询走了全表扫描Type=ALL,rows很大(9950400)基本可以判断这是一段"有味道"的SQL。 获取问题SQL 不同数据库有不同的获取方法,以下为目前主流数据库的慢查询SQL获取工具 MySQL 慢查询日志 测试工具loadrunner Percona公司的ptquery等工具 Oracle AWR报告 测试工具loadrunner等 相关内部视图如v$、$session_wait等 GRID CONTROL监控工具 达梦数据库 AWR报告

MySQL优化-索引

自作多情 提交于 2020-01-03 17:26:29
MySQL优化-索引 一.什么是索引: 索引用来快速寻找那些具有特定值的记录,所有的MySQL索引都以B-树的形式保存。例如,假设某表有1000条数据,如果没有索引,假设要查的数据是第1000条数据,执行查询时MySQL会从第一条记录开始查询,这样要查询1000次才能查到该数据。如果有索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置,至少效率要高100倍。 二.索引分类: 2.1.主键索引 主键是一种唯一suoy索引,它必须指定为“PRIMARY KEY”。一般是在创建表时创建索引:例如“CREATE TABLE tablename ( [...], PRIMARY KEY (列的列表) ); ”。但是,我们也可以通过修改表的方式加入主键,例如“ALTER TABLE tablename ADD PRIMARY KEY (列的列表); ”。每个表只能有一个主键。 参考上篇MySQL优化入门创建的存储过程。 该表是没有加主键索引: 加上索引执行: 运行结果如下: 运行时间从1.216s提升到了0.003s,这个效率明显提高了特别多。 查询索引: SHOW INDEX FROM 表名; 2.2.普通索引 普通索引是由关键字KEY或INDEX定义的索引。 create table ccc( id int unsigned, name varchar(32) ) create

mysql字段约束-索引-外键

ε祈祈猫儿з 提交于 2020-01-01 22:13:04
字符修饰符 1)null于not null 说明与使用 NULL 是空值的意思,就是这个字段没有值 先创建一个数据库,并进入 mysql > create database w1 mysql > use w1 ; 这里用例子举例,什么时用null和 not null 1.首先是not null的使用 可以看到,两个字段我类型后面,我加了, not null 关键词,这就是使用 mysql > create table name ( id int ( 10 ) not null , stname char ( 10 ) not null ) ; Query OK , 0 rows affected ( 0.34 sec ) 然后查看一下表结构,可以看到第三列NULL,两个字段都是NO,表示两个字段都不允许为 NULL 值的意思 mysql > desc name ; + --------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | + --------+----------+------+-----+---------+-------+ | id | int ( 10 ) | NO | | NULL | | | stname | char ( 10

工具猿之MySQL教程-05-索引详细操作管理

点点圈 提交于 2020-01-01 19:51:01
索引详细操作管理 一、认识索引:       1、了解索引    2、索引分类    3、索引设计原则    二、管理索引:       1、创建索引    2、查看索引    3、删除索引    一、认识索引 了解索引 索引是一种特殊的数据库结构,可以用来快速查询数据库中的特定记录。在MySQL中,所有的数据类型都可以被索引。MySQL支持的索引主要有Hash索引和B-Tree索引。目前,大部分MySQL索引都是以B-Tree(B-树)方式存储,是MySQL数据库中使用最频繁的索引类型。 讨论:    (1)BLOB和TEXT类型字段仅支持前缀索引。    (2)使用 “!=” 以及 “<>” 的时候,MySQL不使用索引。    (3)使用LIKE的时候,以 “%” 开头,即使用 “%****” 的时候无法使用索引;在使用OR的时候。要求OR前后字段都要有索引。    (4)当字段使用函数时候,MySQL无法使用索引;在连接条件字段类型不一致的时候,MySQL无法使用索引;在组合索引里使用非第一个索引时也不使用索引。    (5)索引是一个简单的表,MySQL将一个表的索引都保存到同一个索引文件中,所以索引也是占物理空间的,如果有大量的索引,索引文件可能会比数据文件更快的到达最大的文件尺寸。    (6)在更新的表中引入索引列上的数据时,MySQL会自动地更新索引

MySQL数据库(5)- pymysql的使用、索引

眉间皱痕 提交于 2020-01-01 07:27:33
一、pymysql模块的使用 1、pymysql的下载和使用 之前我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库,那如何在python程序中操作数据库呢?这就需要用到pymysql模块,该模块本质就是一个套接字客户端软件,使用前需要事先安装。 1)pymysql模块的下载 pip3 install pymysql 2)pymysql模块的使用 现有数据库mydb,其中有一个userinfo表,表中数据如下: mysql> select * from userinfo; +----+------+-----+ | id | name | pwd | +----+------+-----+ | 1 | wll | 123 | | 2 | ssx | 456 | +----+------+-----+ 示例:使用Python实现用户登录,如果用户存在则登录成功,否则登录失败 import pymysql username = input('请输入用户名:') pwd = input('请输入密码:') # 1、连接 conn = pymysql.connect( host = '127.0.0.1', port = 3306, user = 'root', password = '123', db = 'mydb', charset = 'utf8' ) # 2

索引原理与慢查询优化(2)

丶灬走出姿态 提交于 2020-01-01 07:27:14
七 正确使用索引 一 索引未命中 并不是说我们创建了索引就一定会加快查询速度,若想利用索引达到预想的提高查询速度的效果,我们在添加索引时,必须遵循以下问题 1 范围问题,或者说条件不明确,条件中出现这些符号或关键字:>、>=、<、<=、!= 、between...and...、like、 大于号、小于号 不等于!= between ...and... like 2 尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0,那可能有人会问,这个比例有什么经验值吗?使用场景不同,这个值也很难确定,一般需要join的字段我们都要求是0.1以上,即平均1条扫描10条记录 #先把表中的索引都删除,让我们专心研究区分度的问题 #先把表中的索引都删除,让我们专心研究区分度的问题 mysql> desc s1; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id

sql优化个人总结(全)

回眸只為那壹抹淺笑 提交于 2020-01-01 07:19:19
sql优化总结--博客 第一次自己写博客,以后要坚持每掌握一个技能点,就要写一篇博客出来,做一个不满足于一个 只会写if...else的程序员。 最近三个月入职了一家新的公司,做的是CRM系统,将公司多个平台的数据同步到CRM,进行 查询,统计和汇总。由于数据量比较庞大,大部分表数据上百万,甚至有的表数据上千万。所以 在系统中做sql优化比较多,特此写一篇博客总结一下关于sql优化方面的经验。 --导致查询缓慢的原因 1、数据量过大 2、表设计不合理 3、sql语句写得不好 4、没有合理使用索引 -- 针对SQL语句的优化 1、查询语句中不要使用 * 2、尽量减少子查询,使用关联查询(left join,right join,inner join)替代 3、减少使用IN或者NOT IN ,使用exists,not exists或者关联查询语句替代 4、or 的查询尽量用 union或者union all 代替 (在确认没有重复数据或者不用剔除重复数据时,union all会更好) 5、合理的增加冗余的字段(减少表的联接查询) 6、增加中间表进行优化(这个主要是在统计报表的场景, 后台开定时任务将数据先统计好,尽量不要在查询的时候去统计) 7、建表的时候能使用数字类型的字段就使用数字类型(type,status...),数字类型的字段作为条件查询比字符串的快 8

MYSQL数据库引擎区别详解

风流意气都作罢 提交于 2020-01-01 05:29:41
数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL+API自己做一个引擎。下面介绍几种数据库引擎: ISAM :ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到 数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不 支持事务处理,也不能够容错:如果你的硬盘崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实 时数据,通过其复制特性,MYSQL能够支持这样的备份应用程序。 MyISAM :MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMCHK工具和用来恢复浪费空间的 MyISAMPACK工具

数据库索引

不问归期 提交于 2020-01-01 04:49:53
数据库索引概念: 索引是对数据库中一列或多列的值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息,而不必扫描整个数据库。索引就是一种满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。 索引的优缺点 优点: 1、可以大大加快数据的检索速度。 2、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 3.可以加快表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 4、在使用分组和排序字句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 5、通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。 缺点: 1、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。 2、索引需要占物理空间,出了数据表要转矩数据空间外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 3、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这就降低了数据的维护速度。 哪些列适合创建索引? 1、经常需要搜索的列 2、作为主键的列,强制该列的唯一性和组织表中数据的排序结构。 3.经常用来连接的列,主要是一些外键,可以加快连接速度 4、经常需要排序的列,因为索引已经排序,这样查询可以利用索引的排序加快查询速度 5、经常使用在where字句中的列