SQL优化
以MySql为例,比较常用的数据库,最主要是免费开源。 有以下优点:
- 免费开源: MySQL是一个开源的关系型数据库管理系统, 使用和修改都不需要付费。
- 性能高效: MySQL是一个高性能的数据库管理系统, 支持大量的并发访问, 适合在高并发的环境中使用。
- 稳定可靠: MySQL是经过多年的发展和改进, 稳定可靠, 在大型网站和应用程序中广泛使用。
- 可移植性好: MySQL可以在多种操作系统平台上运行, 包括 Windows, Linux, Mac OS 等。
- 完善的管理工具: 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个,若太多则应考虑一些不常使用到的列上建的索引是否有 必要。