sql 查询语句的优化 mybatis的性能优化 概念

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_45042013/article/details/102769688

sql 语句中关于查询语句的优化

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

2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的
列上建立索引。

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

4、尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进
行全表扫描

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

6、应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。

7、应尽量避免在 where 子句中对字段进行函数操作,这将导致引擎放弃使用索引而进
行全表扫描

8、不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系
统将可能无法正确使用索引。

9、在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的
第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应
尽可能的让字段顺序与索引顺序相一致。

10、索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了
insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样
建索引需要慎重考虑,视具体情况而定。

11、尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间
小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要
高些。

12、任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回
用不到的任何字段

MySQL 性能测试工具

1、The MySQL Benchmark Suite

2、MySQL super-smack

3、MyBench

除了第一个为MySQL性能测试工具,其他两个都为压力测试工具。

数据库性能调优:

应用程序优化
(1)把数据库当作奢侈的资源看待,在确保功能的同时,尽可能少地动用数据库资源。
(2)不要直接执行完整的 SQL 语法,尽量通过存储过程实现数据库操作。
(3)客户与服务器连接时,建立连接池,让连接尽量得以重用,以避免时间与资源的损耗。
(4)非到不得已,不要使用游标结构,确实使用时,注意各种游标的特性。

基本表设计优化
(1)表设计遵循第三范式。在基于表驱动的信息管理系统中,基本表的设计规范是第三范式。
(2)分割表。分割表可分为水平分割表和垂直分割表两种:水平分割是按照行将一个表分割为多个表。
(3)引入中间表。

数据库索引优化
索引是建立在表上的一种数据组织,它能提高访问表中一条或多条记录的特定查询效率。
聚集索引
该索引中键值的逻辑顺序决定了表中相应行的物理顺序。
聚集索引确定表中数据的物理顺序。
非聚集索引
该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同.

猜你喜欢

转载自blog.csdn.net/qq_45042013/article/details/102769688