- 对于查询,尽量避免全表扫面,首先考虑在WHERE,ORDER BY 涉及的列上建立索引。
- 尽量避免WHERE字句中对字段进行 NULL 值判断,创建表时 NULL 是默认值,大多数时候应该使用 NOT NULL,或者使用一个特殊值,如:0,-1作为默认值。
- 尽量避免在 WHERE 字句中使用 !=, <>操作符,MYSQL只有对以下操作符才使用索引:<,<=, >, >=,BETWEEN,IN以及某些时候的 LIKE。
- 尽量避免 WHERE 语句中使用 OR 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,可以使用UNION合并查询。
- IN,NOT IN也要慎用,否则将导致全表扫描,对于连续数值,能用 BETWEEN 就不要用 IN,其他很多时候可以使用 EXISTS代替IN也是一个很好的选择。
- 设计表时,尽量使用数字型字段,若只含数值信息时得字段尽量不要设计为字符型,这会降低查询和连接得性能,并会增加存储的开销。
- 尽可能的使用 VARCHAR / NVARCHAR 代替 CHAR / NCHAR,这样,首先变长字段存储空间变小,可以节省存储空间,其次对于查询而言,在一个相对较小字段内搜索效率显然提高。
- 尽量不要使用 “ * ” 返回所有字段列,使用具体字段列代表 “ * ”,不要返回不用的字段。
- 当笛卡尔积查询时,多个表尽量使用别名(ALIAS),这样可以减少解析时间并减少那些由 COLUMN 歧义引起的语法错误。
- 在 IN 查询中,尽量将出现最频繁的值放在最前面,出现最少的放在最后面,减少判断的次数。
- 尽量使用 EXISTS 代替 SELECT COUNT(1) 来判断是否存在记录,COUNT函数只有在统计表中所有列函数时使用,而且COUNT(1) 比 COUNT(*) 更有效率。
- 还有更多……持续更新中
数据库优化操作策略
最新推荐文章于 2024-11-16 10:18:22 发布