数据库优化思路
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.服务器应坚决优化。