SQL语句中比较常见的优化或者避坑[太阳]

77 阅读2分钟

SQL优化

以MySql为例,比较常用的数据库,最主要是免费开源。 有以下优点:

  1. 免费开源: MySQL是一个开源的关系型数据库管理系统, 使用和修改都不需要付费。
  2. 性能高效: MySQL是一个高性能的数据库管理系统, 支持大量的并发访问, 适合在高并发的环境中使用。
  3. 稳定可靠: MySQL是经过多年的发展和改进, 稳定可靠, 在大型网站和应用程序中广泛使用。
  4. 可移植性好: MySQL可以在多种操作系统平台上运行, 包括 Windows, Linux, Mac OS 等。
  5. 完善的管理工具: MySQL提供了丰富的管理工具, 可以方便的进行数据库的维护和优化.

举几个优化的例子:

1.避免全表扫描

对于查询语句来说,尽量避免使用select * ,count(*);在对应的where,order by后面涉及的字段设置索引。

2.避免null判断

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

select * from book where name is null

3.避免全表扫描

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

应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描。

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

select * from book where bookid in (1,2)

对于连续的数值,多数情况可以使用between and,不要用 in 了:

select * from book where bookid between 1 and 2

4.大数据量查询

对于多张大数据量的表JOIN,要先分页再JOIN,否则逻辑读会很高。

5.合理使用索引

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

一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有 必要。