mysql创建索引

mysql innodb 存储引擎

霸气de小男生 提交于 2020-01-12 09:39:27
--MySQL 结构有两部分组成 1.MySQL server 层 2.存储引擎层 --注:到 存储引擎层之前都属于 MySQL server 层 MySQL 5.1到 5.7 ,大版本 没有变化 , 小版本 唯一的变化就是 存储引擎 ,MySQL server 层没有变过 在 MySQL 5.5之后 包括 5.5 ,默认的存储引擎都是 innodb (engine=innodb) ,但是 在 5.5之前的版本,默认的存储引擎是 myisam ,基于表的 所以 如果是 5.5之前的版本,创建表的时候 需要指定 engine=innodb ,否则创建出来的表 都是 myisam 存储引擎的 基本上 5.1之后就是 5.5了;期间都是一个跳板 MySQL组成部分: 1.连接池组件 2.管理服务和工具组件 3.SQL接口组件 4.查询分析器组件 5.优化器组件 6.缓冲组件 7.插件式存储引擎 8.物理文件 存储引擎是基于表的,不是基于数据库的 mysql 的核心就是存储引擎       MySQL 表存储引擎 MySQL 插拔式的存储引擎架构提供了一系列标准的管理和服务支持 存储引擎是基于表的,而不是基于数据库的 根据具体的应用选择合适的存储引擎 OLTP:在线联机事物系统,---读多写少,比如:电商,支持行级锁,支持外键 OLAP:在线联机分析系统,---这个接触的几率很小     

MySQL 创建表

≯℡__Kan透↙ 提交于 2020-01-11 15:59:14
MySQL中create table语句的基本语法是: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [select_statement] TEMPORARY:该关键字表示用MySQL create table新建的表为临时表,此表在当前会话结束后将自动消失。临时表主要被应用于存储过程中,对于目前尚不支持存储过程的MySQL,该关键字一般不用。 IF NOT EXISTS:实际上是在建表前加上一个判断,只有该表目前尚不存在时才执行create table操作。用此选项可以避免出现表已经存在无法再新建的错误。 tbl_name:你所要创建的表的表名。该表名必须符合标识符规则。通常的做法是在表名中仅使用字母、数字及下划线。例如titles、our_sales、my_user1等都应该算是比较规范的表名。 create_definition:这是MySQL create table语句中关键部分所在。在该部分具体定义了表中各列的属性。 create_definition的基本语句是: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [PRIMARY KEY

Mysql中的锁机制详解

删除回忆录丶 提交于 2020-01-11 14:33:11
原文: MySQL中的锁(表锁、行锁,共享锁,排它锁,间隙锁) 作者: 唐大麦 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。本章我们着重讨论MySQL锁机制 的特点,常见的锁问题,以及解决MySQL锁问题的一些方法或建议。 Mysql用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。这些锁统称为悲观锁(Pessimistic Lock)。 MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最 显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。 表级锁: 开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁: 开销大,加锁慢;会出现死锁

mysql数据库索引

左心房为你撑大大i 提交于 2020-01-11 03:45:50
MySQL数据库索引分成三类:普通索引,唯一索引和主索引 1、普通索引   普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件 (WHEREcolumn=)或排序条件(ORDERBYcolumn)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如 一个整数类型的数据列)来创建索引。 2、唯一索引   普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个姓名在同一个“员工个人资料”数据表里可能出现两次或更多次。   如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。这么做的好 处:一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值 是否已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合, 人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。 3、主索引   在前面已经反复多次强调过:必须为主键字段创建一个索引,这个索引就是所谓的“主索引”。主索引与唯一索引的唯一区别是

MySQL 创建表

两盒软妹~` 提交于 2020-01-11 03:03:16
MySQL中create table语句的基本语法是: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [select_statement] TEMPORARY:该关键字表示用MySQL create table新建的表为临时表,此表在当前会话结束后将自动消失。临时表主要被应用于存储过程中,对于目前尚不支持存储过程的MySQL,该关键字一般不用。 IF NOT EXISTS:实际上是在建表前加上一个判断,只有该表目前尚不存在时才执行create table操作。用此选项可以避免出现表已经存在无法再新建的错误。 tbl_name:你所要创建的表的表名。该表名必须符合标识符规则。通常的做法是在表名中仅使用字母、数字及下划线。例如titles、our_sales、my_user1等都应该算是比较规范的表名。 create_definition:这是MySQL create table语句中关键部分所在。在该部分具体定义了表中各列的属性。 create_definition的基本语句是: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [PRIMARY KEY

(六)6-4Mysql数据修改和索引

心不动则不痛 提交于 2020-01-10 20:24:32
mysql修改、删除数据记录 用update修改记录 UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause] update用于对满足where条件的行进行修改,通过set之心column的新值 例如 update student set age=29 where stdid=10001; 如果不带where条件,将对全表更新 可以使用where_condition,结合order by和limit限定更新的行数 update 的limit一定要结合order by ,否则会导致数据不一致 delete语法 DELETE FROM table_name [WHERE Clause] 不带where条件的delete是对全表进行删除操作 可以结合order by和limit 做排序删除 对比不带where条件的delete,truncate table 和drop table delete 不带条件,逐行删除记录 tuncate table 整体删除数据文件,但是保留scheama信息 drop table同时删除数据文件和schema 索引 MySQL索引的概念 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说

Mysql数据库的索引和视图详解

不羁岁月 提交于 2020-01-10 17:37:37
Mysql数据库的索引和视图详解 索引的概念 数据库的索引与书籍中的目录类似 在一本书中,无需阅读整本书,利用目录就可以快速查找所需信息 书中的目录是一个词语列表,其中注明了包含各个词的页码 数据库索引 在数据库中,索引数据库程序无需对整个表进行扫描,就可以在其中找到所需数据 数据库中的索引是某个表中一列或若干列的集合,以及物理标识这些值的数据页的逻辑指针清单 索引的作用 设置了合适的索引之后,数据库利用葛总快速的定位技术,能够大大加快查询速率 特别是当表很大时,或者查询涉及到多个表时,使用索引可使查询加快成千倍 可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本 通过创建唯一索引保证数据表数据的唯一性 可以加快表与表之间的连接 在使用分组和排序时,可大大减少分组和排序时间 索引分类 普通索引 这是最基本的索引类型,而且它没有唯一性的限制 唯一性索引 索引的列的所有值都只能出现一次,即必须唯一 主键 主键是一种唯一性索引,但它必须指定为“PRIMARY KEY” 全文索引 全文索引可以在VARCHAR或者TEXT类型的列上创建 创建索引的原则依据 表的主键,外键必须有索引 数据量超过300行的表应该有索引 经常与其他表进行连接的表,在连接字段上应该建立索引 唯一性太差的字段不适合建立索引 更新太频繁的字段不适合创建索引 经常出现在Where字句中的字段,特别是大表的字段

Mysql杂记

╄→гoц情女王★ 提交于 2020-01-10 00:56:03
-- SELECT * FROM tb_dept t,time tt WHERE tt.id=3 ; 1、SELECT id FROM tb_dept WHERE id =3 UNION ALL SELECT id FROM time WHERE id=3; CREATE TABLE `employee_tbl` ( `id` int(11) NOT NULL, `name` char(10) NOT NULL DEFAULT '', `date` datetime NOT NULL, `singin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '登录次数', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; --2、 插入多条数据 INSERT INTO alter_test(name,created,updated) VALUES('Tina',SYSDATE(),SYSDATE()),('Jame',SYSDATE(),SYSDATE()); SELECT * FROM employee_tbl; 3、-- 查询分组并统计总数用 with ROLLUP SELECT name, SUM(singin) as singin_count FROM employee_tbl

面试之mysql

萝らか妹 提交于 2020-01-10 00:15:41
1.数据库三范式是什么? a.第一范式:字段具有原子性、不可再分(所有关系型数据库都满足) b.第二范式:需满足第一范式,要求数据库表中的每个实例或行可以被唯一区分。 c.第三范式:需满足第二范式,要求一个数据库表,不包含已在其它表中包含的非主关键字信息 2.优化相关 a.用PreparedStatement,一般来说比Statement性能高 b.有外键约束会影响插入和删除性能,如果程序能保证数据完整性,设计数据库时就去掉外键 c.表种允许冗余. d.union all 要比 union快很多 ,所以不考虑重复数据和排序的话 使用union all 3.索引种类 a.普通索引:针对数据库表创建的索引 b.唯一索引:与普通索引类似,不同的是数据库索引列的值必须唯一, 允许空 c.主键索引:特殊的索引,不允许空,在建表时同时创建主键索引 d.组合索引:讲数据库表中的多个字段,联合起来 组成一个 组合索引. 4.索引的工作机制 a.数据库索引,是数据库管理系统中的 一个排序的数据结构,用于协助快速查询、更新数据库表中的数据。 索引的实现通常使用的是B树及其变种B+树。 5.myisam与 innodb的区别 a.事物:myisam特点是性能,每次查询具有原子性,其执行速度比innodb类型快,不支持事物。innodb提供事物支持,commit、rollback b.锁:innodb

Mysql ------ 索引+ 事务

允我心安 提交于 2020-01-09 23:54:28
文章目录 一、索引: (1)数据库索引: (2)索引的作用: (3)索引分类: (4)创建索引的原则依据: (5)创建索引的办法: 二、事务: (1)事务概念: (2)事务的四大特性: (3)事务的操作: 三、两表相连查询: 一、索引: (1)数据库索引: 1、在数据库中,索引使数据程序无须对整个表进行扫描,就可以在其中找到所需数据; 2、数据库中的索引是某个表中一列或者若干列值的集合,以及物理标识这些值的数据页的逻辑指针清单。 (2)索引的作用: 1、数据库能够大大加快查询速率; 2、降低数据库的 IO 成本,并且索引还可以降低数据库的排序成本; 3、通过创建唯一性索引保证数据表数据的唯一性; 4、加快表与表之间的连接; 5、分组和排序的时候,可以大大减少分组和排序时间 (3)索引分类: 1、普通索引 :最基本的索引类型,而且没有唯一性之类的限制; 2、唯一性索引 :与普通索引基本相似,区别在于,索引列的所有值都只能出现一次,即必须唯一; 3、主键 :主键是一种唯一性索引,必须指定为 “ primary key ” ; 4、全文索引 :mysql 从3.23.23版本开始支持全文索引和全文检索,在mysql 中,全文索引的索引类型为 fulltext ,全文索引可以在 varchar 或者 text 类型的列上创建; 5、单列索引与多列索引:索引可以是单列上创建的索引