网站模版idc,用字母做logo的网站,公司小程序,温州软件开发写在前面#xff1a;
之前baeldung的Java Weekly #xfeff;Reviews里面推荐了一篇关于SQL优化的文章#xff0c;正好最近在学习数据库相关知识#xff0c;记一些学习笔记
原文地址#xff1a;SQL Best Practices Every Java Engineer Must Know
1. 使用索引
使用索引…写在前面
之前baeldung的Java Weekly Reviews里面推荐了一篇关于SQL优化的文章正好最近在学习数据库相关知识记一些学习笔记
原文地址SQL Best Practices Every Java Engineer Must Know
1. 使用索引
使用索引可以让数据库快速定位和访问数据从而显著提升查询效率。
具体可以见数据库学习笔记一、索引
简单总结就是索引采用高效数据结构有序存储数据能简化查询路径让数据库直接定位目标减少磁盘 I/O 操作从而提高查询效率。
TIPS
在经常被 WHERE, JOIN, ORDER BY 和 GROUP BY 子句使用的列上添加索引使用覆盖索引来包含查询所需的所有列 (例如如果有一个查询 SELECT col1, col2 FROM table WHERE col3 value那么可以创建一个包含 col3、col1 和 col2 的复合索引) ⚠️ 过度使用索引会导致 写入性能下降 并且创建索引需要 额外存储空间
利用基于函数的索引
CREATE INDEX idx_upper_last_name ON employees (UPPER(last_name));
SELECT * FROM employees WHERE UPPER(last_name) SMITH;
适用场景
需要经常根据经过转换的列值进行搜索例如使用 UPPER、LOWER、子字符串操作等。需要对计算值或表达式创建索引。想优化涉及日期 / 时间操作的查询。
❗与在 Java 中执行相同操作相比在处理大量数据时在数据库中使用基于函数的索引或表达式索引通常会更高效。
⚠️基于函数的索引或表达式索引也会增加存储需求并减慢数据修改操作的速度。
2. 避免使用 SELECT *
SELECT * 需要检索表格中的所有列会降低效率并导致不必要的数据传输
3. 正确使用 JOIN
使用 INNER JOIN 来获取两个表中匹配的行。使用 LEFT JOIN 来包含左表中的所有行以及右表中匹配的行。
避免使用如下的查询
SELECT u.name, o.order_date
FROM users u, orders o
WHERE u.id o.user_id;
4. 使用 LIMIT 限制返回的行数
如果不需要使用所有的数据可以使用 LIMIT 限制返回的行数。(在分页场景可以使用
SELECT name, email FROM users WHERE active true LIMIT 10;
5. 避免 WHERE 子句中使用函数
可能会导致索引失效从而降低查询效率
6. 优化 JOIN 查询
确保连接条件中使用的列已经建立索引连接多个表时从最小的表开始