数据库个人经验

1.尽量不在数据库中做运算
2.控制单表数据量
3.控制表身段苗条(字段数上限控制在20~50之间)
4.平衡范式和冗余
5.拒绝3B(大sql 大事务 大批量)
6.用好数值字段类型
7.尽可能将字符转换为数字
8.避免使用NULL字段
9.少用并拆分TEXT/BLOB
10.不在数据库中存图片
11.谨慎合理添加索引
12.不在索引列做运算
13.自增列或者全局ID做主键
14.尽量不用外键
15.SQL语句尽可能简单
16.保持事务(连接)短小 事务/连接使用原则:即开即用,用完即关
17.尽可能避免使用SP/TRIG/FUNC(存储过程/触发器/函数)
18.尽量不用SELECT * ,叧取需要数据列
19.改写OR为IN()
20.改写OR为UNION
21.避免负向查询和% 前缀模糊查询
避免负向查询
NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、NOT LIKE等 
避免 % 前缀模糊查询
MySQL> select * from post WHERE title like ‘北京%' ; (0.01 sec)
MySQL> select * from post WHERE title like ' % 北京%' ; (3.27 sec)
22.COUNT(*)的几个例子
COUNT(*)=count(1)
COUNT(0)=count(1)
COUNT(1)=count(100 )
COUNT(*)!=count(col)
23.减少COUNT(*)
24.LIMIT高效分页
示例:
MySQL> select sql_no_cache * from post limit 10,10;
MySQL> select sql_no_cache * from post limit 20000,10;
MySQL> select sql_no_cache * from post limit 80000,10;
MySQL> select sql_no_cache id from post limit 80000,10;
MySQL> select sql_no_cache * from post WHERE id>=323423 limit 10;
MySQL> select * from post WHERE id >= ( select sql_no_cache id from post limit 80000,1 ) limit 10 ;
25.用UNION ALL 而非 UNION
26.分解联接保证高并发
27.GROUP BY 去除排序
28.同数据类型的列值比较 原则:数字对数字,字符对字符
29.Load data 导数据
30.尽量不用 INSERT ... SELECT
31.打散大批量更新 大批量更新凌晨操作,避开高峰
32.隔离线上线下
原则:线上连线上,线下连线下
实时数据用real库
模拟环境用sim库
测试用qa库
开发用dev库
33.禁止未经DBA确认的子查询
34.永远不在程序端显式加锁
35.统一字符集为UTF8
36.统一命名规范
37.注意避免用保留字命名

 

  

posted @ 2016-02-25 15:26  ciade  阅读(322)  评论(0编辑  收藏  举报