获取数据库的实时状态
mysql status;
正确使用索引
- 对整个表不使用索引直接去搜索相关的内容称:全表索引;
- 对于like模糊匹配查询,索引并不能起大多作用。尽量少使用like去查询。
- 一次查询对于一个数据表只能使用一个索引,同个字段同时建立索引,多字段同时查询并不能起叠加效果,这时候就要用到组合索引啦。
-
explain
命令获取 select 语句的执行计划,通过 explain 我们可以知道以下信息:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些索引实际使用了,表之间的引用,每张表有多少行被优化器查询等信息。 - 能使用联合索引的地方可以使用联合索引
- 联合索引,order by ,group by都遵循最左前缀查询
- 根据慢查询(需要在my.ini中配置相关设置)记录查询时间比较大的sql语句,并且优化他。
- 索引会占用更大的磁盘空间,甚至比我们数据表还大。
- 锁机制是影响数据库查询的一个重要原因。
- 适当使用行锁,而不是锁定整个表。当然行锁也有缺陷,这不做 讨论。
- 正确的使用查询缓存,也能提高mysql效率。
- 反范式化设计。这个比较常用。比如一张门磁卡,用户表,如果一个用户一张卡,那么就把用户和卡写到一个表里。
- 放弃关系型数据库。比如redis