执行下面语句发现查询数据非常慢,要30多s:
SELECT t0.* FROM Vsyslog t0 where message like '%Username = teddy%' LIMIT 0,10
(其中Vsyslog 是视图)这个查询很慢,一开始搞不懂为什么,后来发现message 是在视图里面经过复杂运算得到的。
原因解释:因为Vsyslog 查出的每条数据,每次都会匹配where后面的,而这个视图数据是百万级的,所以得比较上百万次复杂的message ,能不慢吗。
解决办法:select * from (select s.endTm,s.message from Vsyslog s) ss where ss.message like '%Username = teddy%'
其实这个解决办法也很简单,就是换个思路,把视图数据先查出来,然后在这些数据筛选,这样就快多了,数据也很快查出来了。
执行下面语句发现查询数据非常慢,要30多s: SELECT t0.* FROM Vsyslog t0 where message like '%Username = teddy%' LIMIT 0,10(其中Vsyslog 是视图)这个查询很慢,一开始搞不懂为什么,后来发现message 是在视图里面经过复杂运算得到的。原因解释:因为Vsyslog 查出的每...
select s.row_id,s.money from v_school s where s.money>1000 (其中v_school是
视图
)这个
查询
很
慢
,一开始搞不懂为什么,后来发现s.money是在
视图
里面经过复杂运算得到的。
原因解释:因为v_school查出的每条数据,每次都会比较where后面的s.money>1000,而这个
视图
数据是百万级的,所以得比较上百万次复...
为什么我只查一行的语句,也执行这么
慢
?第一类:
查询
长时间不返回等MDL锁等flush等行锁第二类:
查询
慢
如果
MySQL
数据库本身就有很大的压力,导致数据库服务器 CPU 占用率很高或 ioutil(IO 利用率)很高,这种情况下所有语句的执行都有可能变
慢
,不属于我们今天的讨论范围。
抛出问题:
但有些情况下,“查一行”,也会执行得特别
慢
。
mysql
> CREATE TABLE `t` (
`id` int(11) NOT NULL,
`c` int(11) DEFAULT NULL,
第2课 数据库
查询
优化技术总揽
综述
查询
优化技术范围,包括
查询
重用、
查询
重写规则、
查询
算法优化、并行
查询
优化等
综述逻辑
查询
优化,包括子
查询
的优化、
视图
重写、等价谓词重写、条件化简、连接消除、非SPJ的优化等
综述逻辑物理优化,包括单表扫描算法、两表连接算法、多表连接算法、基于代价的算法等
初步理解
MySQL
的
查询
执行计划。
预计时间1小时
第3课
查询
优化技术理论与
MySQL
实践(一)------子
查询
的优化(一)
第4课
查询
优化技术理论与
MySQL
实践(二)------子
查询
的优化(二)
从理论看,子
查询
包括的内容和范围,建立清晰的概念
从实践看,
MySQL
的子
查询
优化技术的内容和范围,明确掌握子
查询
优化手段
预计时间2小时,每小时一个课程段(子
查询
是SQL
查询
优化的重点内容,务必掌握好)
第5课
查询
优化技术理论与
MySQL
实践(三)------
视图
重写与等价谓词重写
什么是
视图
重写?哪些类型的
视图
可以被优化?
MySQL
是怎么优化
视图
的?从而明白在
MySQL
中怎么写与
视图
相关的
查询
语句才能有好的效果?
什么是等价谓词重写?
MySQL
中怎么写WHERE子句有利于提高
查询
效率?
预计时间1小时
第6课
查询
优化技术理论与
MySQL
实践(四)------条件化简
什么是条件化简?
MySQL
中对什么样的条件自动进行优化?如何写出可利用索引的条件语句?
预计时间1小时
第7课
查询
优化技术理论与
MySQL
实践(五)------外连接消除、嵌套连接消除与连接消除
连接方式有些什么类型?不同类型的连接又是怎么优化的?外连接优化的条件是什么?
MySQL
中怎么写出可优化的连接语句?
MySQL
是否支持嵌套连接消除?
MySQL
是否支持连接消除?
MySQL
中书写SQL连接
查询
语句时的优化技巧。
预计时间1小时
第8课
查询
优化技术理论与
MySQL
实践(六)------数据库的约束规则与语义优化
数据库的参照完整性(CHECKt NULL等)。什么是语义优化?
MySQL
是否支持语义优化?怎么利用语义优化的思路人工进行SQL语句的优化?
预计时间1小时
第9课
查询
优化技术理论与
MySQL
实践(七)------非SPJ的优化
什么是非SPJ优化?
从理论看,GROUP BY、ORDER BY、LIMIT、DISTINCT等怎么被优化?
MySQL
中:GROUP BY是怎么优化的?ORDER BY是怎么被优化?LIMIT是怎么被优化?DISTINCT是怎么被优化?
非SPJ优化与索引的关系。
预计时间1小时
第10课
MySQL
物理
查询
优化技术概述
从理论看,物理
查询
优化技术的范围。
从
MySQL
实践看,怎么利用物理
查询
优化技术对SQL
查询
语句调优?
本节预计会承接第9课的部分内容。
预计时间1小时
第11课
MySQL
索引的利用、优化
从
MySQL
索引的角度出发,看各种SQL
查询
语句的优化怎么进行?(以前都是从语句的角度看怎么优化,现在站在索引的角度去总结SQL
查询
语句的优化)
预计时间1小时
第12课 表扫描与连接算法与
MySQL
多表连接优化实践
MySQL
的单表扫描算法。
MySQL
的两表连接算法。
MySQL
的多表连接算法。
MySQL
的多表连接的优化技巧。
预计时间1小时
第13课
查询
优化的综合实例(一)------TPCH实践(一)
第14课
查询
优化的综合实例(一)------TPCH实践(二)
以TPC-H国际标准的22条
查询
语句为实例,综合前面课程的内容,把所学的知识用于实践,进行综合的实战演练。
预计时间2小时(每个课时为1个小时)
第15课 关系代数对于数据库的
查询
优化的指导意义------
查询
优化技术总结
再次回到理论,从理论的高度总结关系代数理论与
MySQL
查询
优化实践的关系。真正认识、掌握
MySQL
的
查询
优化技术,大步流星步入
查询
优化的高手之列。
MySQL
的IN
查询
慢
可能是由于多种因素导致的。首先,IN
查询
语句中如果存在大量的值,就会导致
查询
时间变
慢
。这时可以考虑分批次
查询
或者使用JOIN语句来优化
查询
。
其次,数据库表的索引设置也会影响IN
查询
的速度。如果IN
查询
所涉及的字段没有设置索引,那么
查询
的速度就会变
慢
。在这种情况下,需要对相应的字段添加索引以加快
查询
速度。
另外,IN
查询
在
MySQL
中采用线性搜索算法,这种算法是一种比较低效的搜索方式。换句话说,如果IN
查询
操作所涉及的数据集非常大,那么
查询
速度就会明显变
慢
。可以考虑对数据进行分割,然后对分割后的部分数据进行
查询
。
最后,如果IN
查询
语句中所涉及的数据表过大,而且内存空间不足,也会导致
查询
速度变
慢
。这时可以通过增加内存容量或者升级硬件等方式来
解决
该问题。
总之,
MySQL
的IN
查询
慢
可能是由于多种因素导致的,需要针对具体情况进行分析和优化,才能提高
查询
速度。
CSDN-Ada助手:
mysql视图查询慢解决方法
csdn贾克斯:
vue-cli 项目在IE浏览器打开报错解决方法
大成子�:
IE 不支持ES6,解决办法
凉薄非本意: