zoukankan      html  css  js  c++  java
  • 数据库优化

    整理了一些数据库优化的方式。

    第一就是创建表时应该遵循三大范式

    1NF:字段是原子性的,不可分。

    2NF:有主键,非主键字段依赖主键字段。

    3NF:非主键字段之间不能存在相互依赖,即传递依赖。

    第二就是表的垂直分割和水平分割:

    要注意:垂直分割不能破坏第三范式

    第三就是数据库读写分离(主从分离):

    数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作

    第四就是查询优化:

    1.避免全表扫描,考虑在order bywhere涉及的列建立索引

    2.尽量避免在where条件对字段进行null判断,否则将导致引擎放弃使用索引而进行全表扫描(最好用not null填充字段)

    实际上,null也是需要占空间的。可以用0替代null,查询的时候设置查询条件为0就可以了

    3.尽量避免在where子句中使用!=,>,<等判断符,将导致引擎放弃使用索引而进行全表扫描

    4.尽量避免在where子句中使用or来连接条件,否则当一个字段有索引而另外一个字段没有时候,引擎将放弃索引而进行全局扫描

    5.in 和 not in 也要慎用,否则会导致全表扫描,如:

    select id from t where num in(1,2,3)

    对于连续的数值,能用 between 就不要用 in 了:

    select id from t where num between 1 and 3

    很多时候用 exists 代替 in 是一个好的选择:

    select num from a where num in(select num from b)

    用下面的语句替换:

    select num from a where exists(select 1 from b where num=a.num)

    http://blog.csdn.net/zhushuai1221/article/details/51740846

  • 相关阅读:
    jquery特效(2)—选项卡
    CSS3学习笔记(3)—左右飞入的文字
    jquery特效(1)—点击展示与隐藏全文
    javascript学习的思维导图
    CSS3学习笔记(2)—左右跳动的红心
    CSS3学习笔记(1)—淡入的文字
    关于加入博客园的感想
    小程序json字符串转为对象
    小程序页面传值e.currentTarget
    原生js获取元素的子元素
  • 原文地址:https://www.cnblogs.com/XJJD/p/6946850.html
Copyright © 2011-2022 走看看