mysql创建索引

SQL优化

匿名 (未验证) 提交于 2019-12-02 23:38:02
对表的设计合理化(符合3NF) 添加适当的索引(index)[普通索引,主键索引,唯一索引,全文索引] 分表技术(水平分割,垂直分割) 读写(update/delete/add)分离 存储过程(模块化编程) 对MySQL配置优化(配置最大并发数 my.ini , 调整缓存大小) MySQL服务器硬件升级 定时清除不需要的数据,定时进行碎片整理 1NF:对属性的原子性约束,即表的列具有原子性,不可再分解。 2NF:表中的记录是唯一的,实体属性完全依赖于主键,每张表只描述一件事情。 3NF:表中不能有冗余数据,任何非主属性不依赖于其他非主属性,从表的外键必须使用主表的主键。 反三范式:某些业务场景下,为了提高效率,可能会适当降低范式标准,增加字段,允许冗余。 主键索引:当一张表把某个列设为主键的时候,该列就是主键索引 普通索引:一般先创建表,再创建普通索引 create index 索引名 on 表(列) alter table 表名 add index 索引名 (列) 全文索引:全文索引主要针对文件,文本的检索,比如文章,全文索引只针对myisam引擎有效 create table test ( )engine=myisam charset utf-8; 使用全文索引: select * from test where match(xxx,yyy) against('aaa');

MongoDB基础

匿名 (未验证) 提交于 2019-12-02 23:38:02
文章目录 MongoDB基础 使用 MongoDb MongoDB语法 数据库语法 表语法 查找数据:find 修改数据update 删除数据 批量操作:for循环 MongoDB 索引 索引基础 唯一索引 索引的一些参数 explain MongoDB基础 MongoDB 是一个介于关系数据库和非关系数据库之间的产品, 是非关系数据库当中功能最丰富,最像 关系数据库的 。他支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类 型。Mongo 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言, 几乎可以 实现类似关系数据库单表查询的绝大部分功能 ,而且还 支持对数据建立索引 。它的特点是 高性能、易部署、易使用,存储数据非常方便 使用 MongoDb 1.新建一个存放数据库的文件夹,注意:不能有中文和空格,建议不要放在 C盘.(E:\data\mongodbData) 2. 启动 MongoDb 服务 mongod -- dbpath 文件夹路径 //mongod --dbpath E:\data\mongodbData 注意:以这种方式打开服务,这个cmd就不能关闭了,关闭之后,这个数据库自动关闭. 3. 连接数据库 连接本地数据库 : mongo 连接外部数据库 : mongo ip地址 : 端口号

explain 分析sql语句

匿名 (未验证) 提交于 2019-12-02 22:56:40
https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247485618&idx=1&sn=… MySQL索引优化分析 使用explain关键字可以模拟优化器执行sql查询语句,从而得知MySQL 是如何处理sql语句。 +----+-------------+-------+------------+------+---------------+-----+---------+------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------------+------+---------------+-----+---------+------+------+----------+-------+ id select 查询的序列号,包含一组可以重复的数字,表示查询中执行sql语句的顺序。一般有三种情况: 第一种:id全部相同,sql的执行顺序是由上至下; 第二种:id全部不同,sql的执行顺序是根据id大的优先执行; 第三种

阿里最全面试100题:阿里天猫、蚂蚁金服、阿里巴巴面试题含答案

匿名 (未验证) 提交于 2019-12-02 22:56:40
【阿里天猫、蚂蚁、钉钉面试题目】 1、微信红包怎么实现。 2、海量数据分析。 3、测试职位问的线程安全和非线程安全。 4、HTTP2.0、thrift。 5、面试电话沟通可能先让自我介绍。 6、分布式事务一致性。 7、nio的底层实现。 8、jvm基础是必问的,jvm GC原理,JVM怎么回收内存。 9、Java是什么。 10、API接口与SDI接口的区别(API是提供给别人的接口)。 11、dubbo如何一条链接并发多个调用。Dubbo的原理,序列化相关问题。 12、用过哪些中间件。 13、做过工作流引擎没有。 14、以前的工作经历,自己觉得出彩的地方(钉钉) 15、线程池的一些原理,锁的机制升降级(天猫、蚂蚁) 16、从系统层面考虑,分布式从哪些纬度考虑(天猫) 17、Hadoop底层怎么实现(天猫) 18、threadLocal,线程池,hashMap/hashTable/coccurentHashMap等(天猫) 19、秒杀系统的设计(天猫) 20、虚拟机,IO相关知识点(天猫) 21、Linux的命令(天猫) 22、一个整形数组,给定一个数,在数组中找出两个数的和等于这个数,并打印出来,我写的时间复杂度高,要求O(n)。(天猫) 23、n个整数,找出连续的m个数加和是最大。(天猫) 24、更重视开源技术(蚂蚁金服上海) 25、数据库锁隐原理(蚂蚁金服网商) 26

python数据库基础

匿名 (未验证) 提交于 2019-12-02 22:51:30
1.数据类型:(使用原则:够用就行,尽量使用范围小的) 整数:int,bit 小数:decimal 字符串:varchar(可变长度),char(固定长度字符串) 日期时间:date,time,datetime 枚举类型(enum) 特别说明2.约束(限制)主要: 主键primary key:物理存储的顺序 非空 not null 不允许填写空格 唯一 unique:不允许重复 默认default:数据项的默认值 外键 foreign key:存储其他表的主键的字段其他: unsigned 无符号 auto increment 自增4.常用术语: 数据库: 数据库是一些关联表的集合。 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。 外键:外键用于关联两个表。 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。 参照完整性:

MySQL/MariaDB基础

匿名 (未验证) 提交于 2019-12-02 22:06:11
数据库管理系统很早就有了,在最开始时,数据库管理的结构是层次化的,即层次模型,它是一个树形结构,可以通过有限次的查找来定位需要的数据,然而,这种查找还是需要遍历才能实现,所以这种模型应用时间不长久;之后有了网状模型,也就是多个树的集合;层次模型和网状模型都称为非关系型数据库。之后由Edgar Frank Codd提出了一个关系型数据库的模型,从此之后就有了关系模型,其中Oracle公司就是以此为原型开发了Oracle数据库;到现在又提出了反关系模型――No-SQL,它是非关系型的数据库,例如:键值对存储(memcached,redis),HBASE文档数据库等; 大致来讲数据库管理系统发展历程就是: 层次模型 --> 网状模型 --> 关系模型 --> No-SQL 这里我们主要来说说关系型数据库: 1.表 对于关系型数据库而言,最基本的数据管理单位为表,也称为二维表,一个表是由行跟列组成的: 行(row):实例实体,记录,记录数据的特征;(例如:某学生的成绩信息;); 列(column):字段,域;记录数据的某种属性;(例如:默认的身高;) 其中,任何一张RDBMS的表中,可以没有行,但至少要保证要有一列;否则它就不是表,也存储不了数据; 对表的操作是通过关系运算完成的: 选择:从指定表中检索符合条件的行; SELECT * FROM tbl_name WHERE clause;

MySQL问题排查工具介绍

匿名 (未验证) 提交于 2019-12-02 22:06:11
http://mrchenatu.com/2017/03/24/mysql-tool/ 本总结来自美团内部分享,屏蔽了内部数据与工具 知识准备 索引 索引是存储引擎用于快速找到记录的一种数据结构 B-Tree,适用于全键值,键值范围或键最左前缀:(A,B,C): A, AB, ABC,B,C,BC 哪些列建议创建索引:WHERE, JOIN , GROUP BY, ORDER BY等语句使用的列 如何选择索引列的顺序: 经常被使用到的列优先 选择性高的列优先:选择性=distinct(col)/count(col) 宽度小的列优先:宽度 = 列的数据类型 慢查询 原因 未使用索引 索引不优 服务器配置不佳 死锁 … 命令 看版本 mysql -V 客户端版本 select version 服务器版本 explain 执行计划,慢查询分析神器 type const,system: 最多匹配一个行,使用主键或者unique进行索引 eq_ref: 返回一行数据,通常在联接时出现,使用主键或者unique索引(内表索引连接类型) ref: 使用key的最左前缀,且key不是主键或unique键 range: 索引范围扫描,对索引的扫面开始于某一点,返回匹配的行 index:以索引的顺序进行全表扫描,优点是不用排序,缺点是还要全表扫描 all: 全表扫描 no no no extra

Mysql基础2-数据定义语言DDL

匿名 (未验证) 提交于 2019-12-02 22:06:11
数据库操作语句 数据表操作语句 视图定义语句 数据库表设计原则    数据库操作语句   创建库    create database dbname [charset 字符编码] [collate 排序规则]; 如: create database db charset utf8 collate utf8_general_ci;   查询库   1   2)   3) 显示所有数据库:   4) 显示一个数据库的创建语句:   删除库   4) drop database [if exists] 数据库名 drop database if exists db;   5) 修改数据库(只能修改数据库的选项): alter database 数据库名 charset 新的编码 collate 新的排序规则     数据库修改只能修改: 修改编码,修改排序规则   选择库   8) 选择数据库: use dbname; 表操作语句   基本形式: -- 形式1: create table [if not exists] 表名 (字段列表[, 索引或约束列表])[表选项] -- 形式2: create table [if not exists] 表名 (字段1, 字段2, ..... [, 索引1, 索引2,...., 约束1, 约束2, ......])       字段属性    

mysql数据类型

匿名 (未验证) 提交于 2019-12-02 22:06:11
关系型数据库的常见组件 数据库:database 表:table 行:row 列:column 索引:index 试图:view 用户:user 权限:privilege 存储过程:procedure 存储函数:function 触发器:trigger 事件调度器:event scheduler 错误日志:Error log 默认情况下错误日志大概记录以下几个方面的信息: 1、服务器启动和关闭过程中的信息(未必是错误信息,例如,mysql如何启动INNODB的表空间文件的、如何初始化自己的存储引擎的等) 2、服务器运行过程中的错误信息 3、事件调度器运行一个事件时产生的信息 4、在从服务器上启动服务器进程时产生的信息 注意: 1、可以根据自身需求设定不同错误日志的值 1=只记录 Errors 级别的日志 2=记录Errors、warnings 级别的日志 3=记录Errors、warnings、notes(defaults)级别的日志 2、如何删除旧的错误日志 在mysql5.7之前:数据库管理员可以删除很长时间之前的错误日志,以保证mysql服务器上的硬盘空间。mysql数据库中,可以使用mysqladmin命令开启新的错误日志: 命令语法如下:mysqladmin -u root -p flush_logs 也可以登陆mysql数据库中使用flush logs

mysql 创建索引和删除索引

匿名 (未验证) 提交于 2019-12-02 22:06:11
索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引。删除索引可以利用ALTER TABLE或DROP INDEX语句来实现。 (1)使用ALTER TABLE语句创建索引。 语法如下: alter table table_name add index index_name (column_list) ; alter table table_name add unique (column_list) ; alter table table_name add primary key (column_list) ; 其中包括普通索引、UNIQUE索引和PRIMARY KEY索引3种创建索引的格式,table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以同时创建多个索引。 创建索引的示例如下: mysql> alter table table_test add index index_test1(name) ; Query OK, 2 rows affected (0.08 sec) (2)使用CREATE