本文作者:kris

查找MySQL中查询慢的SQL语句方法-mysql查看查询慢的语句

kris 2025-01-30 20:36:05 11
查找MySQL中查询慢的SQL语句方法-mysql查看查询慢的语句摘要: 最近我的数据库(sql)查询速度很慢,这是什么原因?查询慢是和表结构,语句,系统等相关的 建索引等方法都可以改善表结构, 另外如果返回数据量很大,当然会慢,所以你尽量查询相对有用的...

最近我的数据库(sql)查询速度很慢,这是什么原因?

查询慢是和表结构,语句,系统等相关的 建索引等方法都可以改善表结构, 另外如果返回数据量很大,当然会慢,所以你尽量查询相对有用的数据 再就是查询语句了 比如用in查询没有jion查询快,还有 between 改成 > <会快 再还有,用子查询也会慢很多, 如果是一些很复杂的查询,可以改用存储过程会好点,有时用临时表会慢但,从海量数据中查询取数进行子查询又不如用临时表快,不同的问题用不同的解决方法,看你要哪种了,单看你的问题无法直接判断。 不过,优化查询句是关键的了。

sql中in的语句好慢,有什么好方法可取代?

1、对于索引列来最好使用union all,因复杂的查询【包含运算等】将使or、in放弃索引而全表扫描,除非你能确定or、in会使用索引。

2、对于只有非索引字段来说你就老老实实的用or 或者in,因为 非索引字段本来要全表扫描而union all 只成倍增加表扫描的次数。3、对于及有索引字段【索引字段有效】又包含非索引字段来时,按理你也使用or 、in或者union all 都可以,但是我推荐使用or、in。

1、对于索引列来最好使用unionall,因复杂的查询【包含运算等】将使or、in放弃索引而全表扫描,除非你能确定or、in会使用索引。

2、对于只有非索引字段来说你就老老实实的用or或者in,因为非索引字段本来要全表扫描而unionall只成倍增加表扫描的次数。

3、对于及有索引字段【索引字段有效】又包含非索引字段来时,按理你也使用or、in或者unionall都可以,但是我推荐使用or、in。

服务器内存很大,SQL进程占用内存很小,查询速度很慢怎么解决?

是不是内存分配不合理。

查找MySQL中查询慢的SQL语句方法-mysql查看查询慢的语句

图片来源:网络

如果是ORACLE 的话,内存有数据缓冲区,SGA,PGA等等,具体可以上网查一查怎么设置。

另外查询速度很慢的原因非常多,从物理文件的I/O,内存管理,CPU使用,到SQL文都可能出问题。

你只文这么一句话不可能帮你解决。

SQL语句执行很慢,怎么回事?

到这个数量级的全部更新,肯定会很慢。

第一。你的记录不一定在同一个partition,第二。不明白为什么那么多人建议你建索引,你建的索引越多,你的更新速度越慢,因为你更新记录的同时,还有更新索引。

第三。你必须知道更新速度慢的瓶颈在哪里。是读写太多,还是内存不够,还是CUP不够快,然后对症下药。下面介绍两个简单的办法,也许有效:

第一:把这个100W行的表纵向劈成两个,用外键关系连接,一个装小的,经常改变的数据比如ID,外键,状态值,时间等,另一个装大的,不经常改变的数据,比如很长的字符串,xml,text 等。

这样更新时操作小的这个表,可以大大节约内存和CPU 开销,降低磁盘操作。

坏处就是查询时会慢些。

第二:把这100W行横向切成很多个表,比如每个月的记录装在一个表里,这样每个表的记录数可能只有几万,查询,更新都会快很多。

坏处是查询,更新都不如原来好写。

如何对数据库中慢SQL进行快速定位?

你这个问题其实是Application performance management的范畴,APM中最主要的一个部分就是慢sql监控,可以快速定位和监控,相关有很多公司的产品,我就不做广告了,自己搜吧

如果不需要全套APM,其实自己写一个简单监控api/sql性能的程序也是很容易的,实现难度并不复杂。当然,独立跑压力测试把所有sql都过一遍,也能确定哪些是慢sql

文章版权及转载声明

作者:kris本文地址:https://www.damoyx.com/p/28984.html发布于 2025-01-30 20:36:05
文章转载或复制请以超链接形式并注明出处大漠游侠网

阅读
分享