mysql数据库相关优化

开启慢查询日志 

1.关闭mysql服务:net stop mysql

2.以慢查询记录日志方式启动数据库:在mysql安装目录的bin目录下面cmd进入命令窗口,输入                                                                                                                                                           mysqld.exe --safe-mode --slow-query-log                                                此时在c盘的programdata里面的mysql-》mysql server x.x -》data  里面将出现一个以.log结尾的文件

3.设置慢查询时间:set global long_query_time = 0.5 ,设置慢查询时间为0.5秒

4. 进行一次慢查询: select ........

5.查看日志:打开刚刚生成的日志文件

 

 

如何分析慢查询?主要看什么参数?

使用 explain加上慢查询的sql语句进行分析,那么查询语句为:

explain select ......from........................

得到的信息的注释见下图:

主要看的参数为:

上面的type为all表示 全表扫描,效率低下

possible_keys

key

rows

 

 

什么是3NF设计表?

列具有原子性

表中数据具有唯一标识,通过主键实现

表与表之间通过外键关联

 

 

myisam与innodb的区别?

MyISAM:默认表类型,它不是事务安全的,而且不支持外键,如果执行大量的select,MyISAM比较适合。

InnoDB:支持事务安全的引擎,支持外键、行锁、事务。如果有大量的update和insert,使用InnoDB。

 

 

数据库索引的概念是什么?原理是怎样的?

索引在数据库管理系统中是一个排序形式的数据结构,以协助快速查询和更新数据库表中数据。索引的实现通常使用B树及其变种B+树。

原理是将每一条数据进行连续标号的标记,以二叉树的形式进行排序,提高查询效率

 

 

索引的创建原则有哪些?

1.对于查询频率高的字段创建索引

2.对排序、分组、联合查询频率高的字段创建索引

3.索引的数目不宜太多

4.若在实际中,需要将多个列设置索引时,可以采用多列索引

 

 

索引的分类有哪些?

  • 普通索引:仅加速查询

  • 唯一索引:加速查询 + 列值唯一(可以有null)

  • 主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个

  • 组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并

  • 全文索引:对文本的内容进行分词,进行搜索

 

 

复合索引的使用原则?

对于 复合索引(多列索引),如果不是使用的第一部分(第一列)就不会使用 索引

在where 条件后面使用or或者模糊查询前置匹配(%在前面)都会导致索引失效

 

 

水平分表的原则是什么样的?

当一张表中的数据过多时在查询时将会是低效率的,此时需要将这个张表按一定数量数据平均分成张表,从而达到提高查询效率的效果。 

 

 

ddl、dml优化

https://blog.csdn.net/qq_42764468/article/details/97677796

 

 

dql 中有哪些写法会导致索引失效?

1.在where后面 添加or、模糊查询前置匹配、使用!=或<>  会导致

2.使用in和not in    会导致

3.不要使用全表扫描、不要使用select * 中的*

 

 

sql语句的执行顺序

from、where、group by 、 having 、select 、 order by 、limit

 

 

 

分页偏移量大的时候如何优化?

使用到索引的字段进行表的扫描

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值