数据库优化思路

1.SQL语句优化

    (1)应尽量避免在where 子句中使用!=或者<>操作符,否则将引擎放弃使用索引进而进行权标扫描。

    (2)应尽量避免咋where 子句中对字段进行null值的判断,否则将导致引擎放弃使用索引而进行全表的扫描。

            可以在num上设置默认值为0确保num中没有null值。

    (3)用exits代替in。

             IN表示范围,指某一字段在某一范围之内,这个范围一般使用子查询来获取,由此可知IN子查询返回的结果应该就是这个范围集。 

             EXISTS表示存在,指至少存在一处,这个条件由EXISTS子查询来完成,但是在这里EXISTS子查询返回的结果却不再是一个结果集而 是  一  个布尔值(true或false,其实这个挺好理解的,EXISTS就表示如果子查询能查到值则返回true,则执行EXISTS之前的语 句。

2. 索引优化

    索引类型:

    一 . (UNIQUE)唯一索引,不可以出现相同的值,可以有 NULL值。

    二 .  (INDEX)普通索引 ,允许出现相同的索引内容。

    三. (PRIMARY KEY) 主键索引,不允许出现相同的值,且不能为NULL值,一个表只能有一个primary_key索引

    四. (fulltext index)全文索引,述三种索引都是针对列的值发挥作用,但全文索引,可以针对值中的某个单词,比如一篇文章中的某个词,然而并没有什么卵用,因为只有myisam以及英文支持,并且效率让人不敢恭维,但是可以用coreseek和xunsearch等第三方应用来完成这个需求。

3.数据库结构优化。

 (1)范式优化: 比如消除冗余(节省空间。。)

   ( 2)反范式优化:比如适当加冗余等(减少join)

   (3)拆分表: 分区将数据在物理上分隔开,不同分区的数据可以制定保存在处于不同磁盘上的数据文件里。

    (4)拆分又分垂直拆分和水平拆分

4.选择合适的数据类型。

5.服务器应坚决优化。

 

原文地址:https://www.cnblogs.com/xiaozhaung/p/10871576.html