数据库优化

1    三范式

2    mysql引擎 : MyISAM         InnoDB

SQL语句优化

一、尽量 选择数据类型占空间少,在where  ,group by ,order   by 中出现的频率高的字段建立索引。

二、explain 放在查询语句前面可以获取查询计划,建立合适索引。

  例: explain  select * from  t1  where id<5

三、尽量避免使用  select * ....;用具体字段代替*   ,不要返回用不到的任何字段。

四、少使用like %查询,否则会全表扫描。

五、子查询优化为  join 查询

六、尽量不要使用自定义函数。

七、单条查询最后添加 limit 1,停止全表扫描。

八、where 字句中不使用!=,否则放弃索引全表扫描

九、尽量避免NULL值判断,否则放弃索引全表扫描,在number列上设置默认值0,确保number列无 null值

十、尽量避免  or 连接条件,否则放弃索引全表扫描,可以用 union代替

  优化前 :  select  id  from  t1   where id=10 or id=20;

  优化后: select id from  t1  where id=10  union all select id  from t1 where  id =20;

十一、尽量避免使用 in  和 not in,否则全表扫描

  优化前: select id  from t1  where id  in(1,2,3,4);

  优化后: select id from t1  where id between  1 and 4;

 

其他优化方法:

字段数据类型选择     :  优先程度    数字 > 时间日期  >字符串

          同一级别      占用空间小的 >占用空间大的

          少于50字节:  char >varchar

          对数据存储精确不要求  float  > decimal

          如果很少被查询可以用 timestamp(时间戳实际十整型存储)

 

键的设置

  尽量设置占用空间小的字段为主键

  外键的设置用于保持数据完整性,但是会降低数据导入和操作效率,特别是高并发情况下,而且会增加维护成本。

  虽然高并发不建议设置外键,但是可以在表关联的字段上 设置索引,以提供查询效率

 

表的拆分: 垂直拆分、水平拆分。

posted @ 2021-04-25 22:18  苍山如海,残阳如血  阅读(51)  评论(0)    收藏  举报