19 为什么我只查一行的语句,也执行这么慢?.pdf
一般情况下,如果我跟你说查询性能优化,你首先会想到一些复杂的语句,想到查询需要 返回大量的数据。但有些情况下,“查一行”,也会执行得特别慢。今天,我就跟你聊聊 这个有趣的话题,看看什么情况下,会出现这个现象。
一般情况下,如果我跟你说查询性能优化,你首先会想到一些复杂的语句,想到查询需要 返回大量的数据。但有些情况下,“查一行”,也会执行得特别慢。今天,我就跟你聊聊 这个有趣的话题,看看什么情况下,会出现这个现象。
在 MySQL 中,有很多看上去逻辑相同,但性能却差异巨大的 SQL 语句。对这些语句使用 不当的话,就会不经意间导致整个数据库的压力变大。 我今天挑选了三个这样的案例和你分享。希望再遇到相似的问题时,你可以做到举一反 三、快速解决问题。
上线前整理数据,把空洞处理调。比如:原来单词存在A表,新建B表 ,执行 insert into B(word) select word from A. B的id是自增的,就会生成连续的主键
在你开发应用的时候,一定会经常碰到需要根据指定的字段排序来显示结果的需求。还是 以我们前面举例用过的市民表为例,假设你要查询城市是“杭州”的所有人名字,并且按 照姓名排序返回前 1000 个人的姓名、年龄。
在今天这篇答疑文章更新前,MySQL 实战这个专栏已经更新了 14 篇。在这些文章中,大 家在评论区留下了很多高质量的留言。现在,每篇文章的评论区都有热心的同学帮忙总结 文章知识点,也有不少同学提出了很多高质量的问题,更有一些同学帮忙解答其他同学提 出的问题。 在浏览这些留言并回复的过程中,我倍受鼓舞,也尽我所知地帮助你解决问题、和你讨 论。可以说,你们的留言活跃了整个专栏的氛围、提升了整个专栏的质量,谢谢你们。
在开发系统的时候,你可能经常需要计算一个表的行数,比如一个交易系统的所有变更记 录总数。这时候你可能会想,一条 select count(*) from t 语句不就解决了吗? 但是,你会发现随着系统中记录数越来越多,这条语句执行得也会越来越慢。然后你可能 就想了,MySQL 怎么这么笨啊,记个总数,每次要查的时候直接读出来,不就好了吗。
经常会有同学来问我,我的数据库占用空间太大,我把一个最大的表删掉了一半的数据, 怎么表文件的大小还是没变? 那么今天,我就和你聊聊数据库表的空间回收,看看如何解决这个问题。
脏页会被后台线程自动 flush,也会由于数据页淘汰 而触发 flush,而刷脏页的过程由于会占用资源,可能会让你的更新和查询语句的响应时间 长一些。在文章里,我也给你介绍了控制刷脏页的方法和对应的监控方式。
postgresql 是逐渐热门的数据库 ,这里首先介绍了下这个数据库的基本使用,然后是 与mysql的对比,优化。