找回密码
 立即注册
快捷导航

[数据库] 数据库优化

[复制链接]
镖师 2023-7-9 22:49:36 | 显示全部楼层
本帖最后由 镖师 于 2023-7-12 19:08 编辑

尽量不要使用 select * ,减少不必要的传输;

尽量使用 LIMIT 分页,减少数据表网络传输量,提升查询效率,如果要的结果只有1 条,就可以使用 LIMIT 1 ,告诉 SELECT 语句只需要返回一条记录即可。这样的好处就是 SELECT 不需要扫描完整的表,只需要检索到一条符合条件的记录即可返回。

减少数据冗余(不要的数据及时删除),添加关联(主外键约束)

将常用的数据的字段提取出来作为单独一张表,减少多表查询

多表连接查询时,字段务必加上表名或者表别名

在明知道合并查询时没有重复项时,要使用 UNION ALL 而不是 UNION,因为 UNION 还有去重效果,效率没有 UNION ALL 高

要 控制连接表的数量(join...on...) 。多表连接就相当于嵌套 for 循环一样,非常消耗资源,会让 SQL 查询性能下降得很严重,因此不要连接不必要的表。建议超过三个表禁止 join。

分组时,当过滤条件有聚合函数时,过滤条件必须声明在having中,当过滤条件没哟聚合函数时,可以放在having也可以放在where中,但是强烈建议放在where中,因为效率问题;

text和blob类型的数据删除后容易导致“空洞”,使得文件碎片比较多,所以频繁使用的表不建议包含TEXT类型字段,建议单独分出去,单独用一个表。

不要使用外键约束,外键的约束概念需要再应用层解决,对于大并发的 SQL 操作,外键约束的系统开销会变得非常慢

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

温馨提示

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

Archiver|手机版|小黑屋|DLSite

GMT+8, 2024-11-23 01:22

Powered by Discuz! X3.5 and PHP8

快速回复 返回顶部 返回列表