mysql创建索引

【读书笔记】数据库

你离开我真会死。 提交于 2020-03-13 21:00:27
这里是整理了数据库的一些常见问题,以及基本命令 1、数据库中的事务 数据库事务是数据库运行中的逻辑工作单位,单个逻辑工作单元所执行的一系列操作,要么都执行,要么都不执行。 2、数据库事务的四大特性(ACID) 原子性(Atomicity):一件事务要么提交成功,要么全部失败回滚 一致性(Consistency):事务执行前后都保持一致性原则 隔离性(Isolation):事务提交之前它对其他所有事务不可见。通过乐观锁和悲观锁实现 持久性(Durability):一旦事务提交,所做修改永久保存到数据库中 3、数据库的锁 乐观锁:假设不会发生冲突,直到事务提交时才检查是否违反了完整性(通过数据 版本或者时间戳实现;添加version字段,每做一次操作就让version+1,提交时进行对比) 悲观锁:假设一定会发生冲突,屏蔽一切可能违反完整性的操作(synchronized就是悲观锁) 共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁。获准共享锁的事务只能读数据,不能修改数据。 排他锁(X锁):如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。 4、数据库优化 (1)sql语句的优化 子查询变成left join or条件优化,多个or条件可以用union all对结果进行合并

sphinx安装

懵懂的女人 提交于 2020-03-13 14:08:08
相关命令及步骤 创建主索引: /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all 创建增量索引: 1. 创建测试数据表以及数据 2. 修改配置文件 主索引源:sql_query_pre 增量索引源:sql_query_pre sql_query sql_query_post 主索引:source path 增量索引:source path 3. 创建/更新主索引 4. 创建/更新增量索引 /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf delta 重启索引进程 /usr/local/coreseek/bin/searchd --stop /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf 索引合并 /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --merge main delta --rotate csft.conf配置文件 source src1 { type = mysql sql_host = 127.0.0.1

MYSQL 数据库索引

梦想的初衷 提交于 2020-03-12 17:05:07
索引概述 在MySQL中,索引由数据表中一列或多列组合而成,创建索引的目的是为了优化数据库的查询速度。其中,用户创建的索引指向数据库中具体数据所在位置。当用户通过索引查询数据库中的数据时,不需要遍历所有数据库中的所有数据。这样,大幅度提高了查询效率。 MySQL索引概述 1.索引是一种将数据库中单列或者多列的值进行排序的结构。应用索引,可以大幅度提高查询的速度。 2.用户通过索引查询数据,不但可以提高查询速度,也可以降低服务器的负载。 3.应用MySQL数据库时,并非用户在查询数据的时候,总需要应用索引来优化查询。 4.整体来说,索引可以提高查询的速度,但是会影响用户操作数据库的插入操作。 MySQL索引分类 MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 创建索引 创建索引是指在某个表中至少一列中建立索引,以便提高数据库性能。其中,建立索引可以提高表的访问速度。本节通过几种不同的方式创建索引。其中包括在建立数据库时创建索引、在已经建立的数据表中创建索引和修改数据表结构创建索引。 在建立数据表时创建索引 在建立数据表时可以直接创建索引,这种方式比较直接,且方便、易用。 基本语法结构如下: create table table_name( 属性名 数据类型[约束条件], 属性名 数据类型[约束条件] …… 属性名 数据类型 [UNIQUE |

数据库表结构设计方法及原则

偶尔善良 提交于 2020-03-12 15:27:33
http://www.cnblogs.com/RunForLove/p/5693986.html 数据库设计的三大范式:为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。   在实际开发中最为常见的设计范式有三个:第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式;第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中;第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。总结一下,就是: 第一范式(确保每列保持原子性); 第二范式(确保表中的每列都和主键相关); 第三范式(确保每列都和主键列直接相关,而不是间接相关)。   在目前的企业信息系统中,数据库还是最佳的数据存储方式,虽然已经有很多的书籍在指导我们进行数据库设计,但应该那种方式是设计数据库的表结构的最好方法、设计时应遵从什么样的原则、四个范式如何能够用一种方式达到顺畅的应用等是我一直在思考和总结的问题

笔记:MySQL相关知识

孤街醉人 提交于 2020-03-12 09:03:48
MySQL背景介绍 MySQL发展史 MySQL分支介绍 MySQL的优点 MySQL数据库组成 MySQL的原理 MySQL执行流程 MySQL日志 MySQL事务、锁、索引与SQL优化 MySQL背景介绍 随着互联网企业的兴起,例如阿里巴巴、网易、Yahoo、Facebook等大型互联网公司的推动,目前Mysql已经成为世界上最流行的数据库,并一步步开始占领了原有商业数据库的市场,目前Mysql已经成为互联网公司甚至部分传统公司的首选数据库。 MySQL发展史 最初为AB公司的产品,Mysql5.0及之前的版本均由AB公司管理,在2008年的时候AB公司被Sun公司收购,Mysql也就归属到了Sun公司下,但在Sun还没待多久,Sun公司就被Oracle公司收购了,此期间诞生了一个Sun向Oracle的过渡版本:Mysql5.5(5.1-5.5之间没有发布过版本),直至5.6Mysql就彻底归属于Oracle公司旗下了,从Oracle收购Mysql以来,Mysql发展的速度及新的功能越来越强大,逐步向Oracle靠拢,如:表空间、redo、undo分离、隐藏索引,至2019年,Mysql8.0.15已经GA(官方发布稳定版本),整体发展过程如下(AB版本不做加入): 5.1 → 5.5 → 5.6 → 5.7 → 8.0 MySQL分支介绍 MySQL 是一个开源数据库

Mysql性能优化

巧了我就是萌 提交于 2020-03-12 03:01:34
1.1 Mysql数据库的优化技术   1、mysql优化是一个综合性的技术,主要包括       1. 表的设计合理化(符合3NF)       2. 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引]       3. 分表技术(水平分割、垂直分割)       4. 读写[写: update/delete/add]分离       5. 存储过程 [模块化编程,可以提高速度]       6. 对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ]       7. mysql服务器硬件升级       8. 定时的去清除不需要的数据,定时进行碎片整理(MyISAM)   2、要保证数据库的效率,要做好以下四个方面的工作       1. 数据库设计       2. sql语句优化       3. 数据库参数配置       4. 恰当的硬件资源和操作系统       此外,使用适当的存储过程,也能提升性能。       这个顺序也表现了这四个工作对性能影响的大小 1.2 数据库表设计   1、通俗地理解三个范式        第一范式: 1NF是对属性的原子性约束,要求属性(列)具有原子性,不可再分解;(只要是关系型数据库都满足1NF)        第二范式: 2NF是对记录的惟一性约束,要求记录有惟一标识

阿里面试官,直接重置了我对索引的了解

元气小坏坏 提交于 2020-03-11 12:59:52
前言 写数据库,我第一时间就想到了MySQL、Oracle、索引、存储过程、查询优化等等。 不知道大家是不是跟我想得一样,我最想写的是索引,为啥呢? 以下这个面试场景,不知道大家熟悉不熟悉: 面试官:数据库有几千万的数据,查询又很慢我们怎么办? 面试者:加索引。 面试官:那索引有哪些数据类型?索引是怎么样的一种结构?哪些字段又适合索引呢?B+的优点?聚合索引和非聚合索引的区别?为什么说索引会降低插入、删除、修改等维护任务的速度?……… 面试者:面试官怎么出我们公司门来着😂。 是的大家可能都知道慢了加索引,那为啥加,在什么字段上加,以及索引的数据结构特点,优点啥的都比较模糊或者甚至不知道。 那我们也不多BB了,直接开始这次的面试吧。 正文 我看你简历上写到了熟悉MySQL数据库以及索引的相关知识,我们就从索引开始,索引有哪些数据结构? Hash、B+ 大家去设计索引的时候,会发现索引类型是可以选择的。 为什么哈希表、完全平衡二叉树、B树、B+树都可以优化查询,为何Mysql独独喜欢B+树? 我先聊一下Hash: 大家可以先看一下下面的动图 注意字段值所对应的数组下标是哈希算法随机算出来的,所以可能出现哈希冲突。 那么对于这样一个索引结构,现在来执行下面的sql语句: select * from sanguo where name=‘鸡蛋’ 可以直接对‘鸡蛋

mysql关系型数据库

。_饼干妹妹 提交于 2020-03-10 18:03:59
参考:https://www.cnblogs.com/alex3714/articles/5950372.html 关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。 RDBMS 术语 数据库: 数据库是一些关联表的集合。. 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。 行: 一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。 冗余 :存储两倍数据,冗余可以使系统速度更快。(表的规范化程度越高,表与表之间的关系就越多;查询时可能经常需要在多个表之间进行连接查询;而进行连接操作会降低查询速度。例如,学生的信息存储在student表中,院系信息存储在department表中。通过student表中的dept_id字段与department表建立关联关系。如果要查询一个学生所在系的名称,必须从student表中查找学生所在院系的编号(dept_id),然后根据这个编号去department查找系的名称。如果经常需要进行这个操作时,连接查询会浪费很多的时间。因此可以在student表中增加一个冗余字段dept_name,该字段用来存储学生所在院系的名称。这样就不用每次都进行连接操作了。) 主键 :主键是唯一的

mysql-基本命令与索引

吃可爱长大的小学妹 提交于 2020-03-09 11:48:51
基本SQL命令 库管理 创建库(指定字符集):create database 库名 default charset = utf-8; 查看创建库的语句:show create database 库名; 切换库:use 库名; 查看当前所在库:select database(); 查看库中已有表:show tables; 删除库:drop database 库名; 表管理 创建表(指定字符集):CREATE TABLES 表名(字段名,数据类型,...)DEFAULT CHARSET = UTF-8; 查看创建表的语句(字符集和存储引擎):show create table 表名; 查看表结构:desc 表名; 删除表:drop table 表名; 表记录管理: 插入:insert into 表名 values(),(),...; insert into 表名(字段名列表) values(),(),...; 查询:select * from 表名; select 字段名1,字段名2,...from 表名; 删除:delete from 表名 where 条件; 更新:update 表名 set 字段名=值1,...where 条件; 表字段管理: 添加:alter table 表名 add 字段名 数据类型 first ; alter table 表名 add 字段名 数据类型

MYSQL普通查询

六眼飞鱼酱① 提交于 2020-03-08 16:39:39
MYSQL普通查询 一、聚合函数(聚合查询) 函数名 功能 avg(字段名) 求指定字段的平均值 max(字段名) 求指定字段的最大值 min(字段名) 求指定字段的最小值 sum(字段名) 求指定字段的记录和 count(字段名) 求指定字段的记录的个数 聚合函数使用语法:select 聚合函数1,聚合函数2 from 表名; 注意:select name,max(attack) from sanguo;聚合函数在默认情况下是不能与其他列一起做查询的 表名sanguo id name attack defense gender country 1 诸葛亮 102 3 m 蜀国 2 司马懿 110 60 m 吴国 3 貂蝉 120 33 w 蜀国 4 张飞 190 90 m 魏国 5 赵云 106 60 m 吴国 案例1:找出sanguo表中最大的攻击力值是多少 select max(attack) from sanguo ; select max(attack) as '最大攻击力' from sanguo ; 案例2:表中共有多少个英雄? select count(name) as number from sanguo;//如果name是null 查到的数据将不会有null的数据 select count(*) as '英雄个数' from sanguo;//*是这一行