‘壹’ 如何在mysql查找效率慢的SQL语句
查看慢SQL是否启用,查看命令:show variables like 'log_slow_queries';
如果结果为ON则是开启了,如果为OFF则表示禁用了。
开启慢查询命令:set global log_slow_queries = on;
查看是否开启:show variables like 'log_slow_queries';
查看慢查询参数,即设置超过多少秒的查询归为了慢查询。参数为:long_query_time,查询命令:showglobal variables like 'long_query_time';
mysql默认时间为10秒,即10秒及以上的查询被归为了慢查询。我们的实际项目中根本就不可能这么包容你,所以得提供查询效率优化sql,让程序更快的执行。
这里设置时间为1秒,即超过1秒就会被认为慢查询。设置命令:set global long_query_time =1;用命令设置的,会立即生效,不用重启mysql服务。但重启mysql服务后就会失效。
查看设置的时间,show global variables like 'long_query_time';即可看到现在已经变为1秒了
查看慢查询存放日志,命令:show variables like 'slow_query_log_file';
去相应目录下查看即可。
‘贰’ 如何查找MySQL中查询慢的SQL语句
你是指慢查询日志吗?
在my.ini中加上下面两句话
log-slow-queries = e:\mysql5.5\mysql_slow_query.log
long_query_time=10
前面一句是设置慢查询日志存放路径,第二句是指多少秒以上算慢查询,上面的语句,就是指10秒。然后show variables like '%slow%';就行了
‘叁’ 请教SQL表查询慢的原因
查询慢是和表结构,语句,系统等相关的 建索引等方法都可以改善表结构, 另外如果返回数据量很大,当然会慢,所以你尽量查询相对有用的数据 再就是查询语句了 比如用in查询没有jion查询快,还有 between 改成 > <会快 再还有,用子查询也会慢很多, 如果是一些很复杂的查询,可以改用存储过程会好点,有时用临时表会慢但,从海量数据中查询取数进行子查询又不如用临时表快,不同的问题用不同的解决方法,看你要哪种了,单看你的问题无法直接判断。 不过,优化查询句是关键的了。
‘肆’ SQL查询太慢,或者根本就查不到数据有超时了
那是因为你没有建索引的关系,需要在danhao上建立索引,如果danhao是唯一值,需要建唯一索引。
‘伍’ sql:查询时快时慢
如果说是sql
server
的话有这种情况,字段越多,查询可能越慢,并且如果你的字段中有比如text,ntext之类的话会有这种情况;
还有,你的这种写法可能也造成执行慢,SQL在执行时有这样一个规则,不知道你是否了解,在执行时,SQL
后台会先执行编译,找到一条最佳查询路径,也就是最快的查询路径,再真正执行查询;这个编译是需要时间的,如果条件复杂,或者由其它的变化而来的条件,会存在编译的查找最佳路径的时间问题;
数据库的字段越多,会有可能越慢,不管是否是空表,至于什么原因,好像MICROSOFT没有说法。
另外1=1这种恒等条件最好也不要加。
‘陆’ sql数据查询反映很慢
这个问题我也遇见过,慢的话也正常,因为数据比较多
解决办法啊,首先从表考虑,可以针对这个表建索引,
然后的话说优化查询语句,可以的话添加 with (nolock);即select * from A with (nolock) 这样
然后就是where条件了,尽量不要使用like,in这些。尽量添加where条件。
这样应该可以了,还不行的话,上网查查怎么优化DB。
‘柒’ 求助 SQL 查询太慢
C表临时生成还大,然后再去查询一定会减慢速度,而且几乎没有能走索引或者其他条件的通道(一堆左右链接decode)。
语句优化几乎做不了什么,试试看查询结构优化吧,比如C建立为物化视图或者一张表等等,语句这块做不了什么了。
‘捌’ SQL子查询过多查询速度太慢如何优化
先行转列行不行呢,以第一张表为例
select proctguid,
max(case when num=1 then description end) tz1,
max(case when num=2 then description end) tz2,
max(case when num=3 then description end) tz3,
max(case when num=4 then description end) tz4,
max(case when num=5 then description end) tz5
from proct_description
group by proctguid
然后再join,用proctguid和原表关联,这样上面就只需要写
select p.*,tz1,tz2,tz3,tz4,tz5 from 了
‘玖’ 如何解决SQL Server查询速度缓慢的问题
你先看看绑定的时候代码有问题没。
然后注意取数据最好用存储过程,不仅快还好维护。分页查询百万级的数据我觉得不一定要用。
数据库的索引建立,以及旧数据归档也就是很有效地提高性能的方法。
‘拾’ 怎么查找执行比较慢的sql语句
一、MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log 这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。 2,long_query_time 当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。 3,slow_query_log_file 记录日志的文件名。 4,log_queries_not_using_indexes 这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快。 二、检测mysql中sql语句的效率的方法 1、通过查询日志 (1)、Windows下开启MySQL慢查询 MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上 代码如下 log-slow-queries = F:/MySQL/log/mysqlslowquery。log long_query_time = 2 (2)、Linux下启用MySQL慢查询 MySQL在Windows系统中的配置文件一般是是my.cnf找到[mysqld]下面加上 代码如下 log-slow-queries=/data/mysqldata/slowquery。log long_query_time=2 说明 log-slow-queries = F:/MySQL/log/mysqlslowquery。 为慢查询日志存放的位置,一般这个目录要有MySQL的运行帐号的可写权限,一般都将这个目录设置为MySQL的数据存放目录; long_query_time=2中的2表示查询超过两秒才记录;