mysql优化查询速度
发布网友
发布时间:2022-04-26 11:49
我来回答
共3个回答
热心网友
时间:2022-04-30 00:30
在已有的 MySQL 服务器之上使用 Apache Spark (无需将数据导出到 Spark 或者 Hadoop 平台上),这样至少可以提升 10 倍的查询性能。使用多个 MySQL 服务器(复制或者 Percona XtraDB Cluster)可以让我们在某些查询上得到额外的性能提升。你也可以使用 Spark 的缓存功能来缓存整个 MySQL 查询结果表。
思路很简单:Spark 可以通过 JDBC 读取 MySQL 上的数据,也可以执行 SQL 查询,因此我们可以直接连接到 MySQL 并执行查询。那么为什么速度会快呢?对一些需要运行很长时间的查询(如报表或者BI),由于 Spark 是一个大规模并行系统,因此查询会非常的快。MySQL 只能为每一个查询分配一个 CPU 核来处理,而 Spark 可以使用所有集群节点的所有核。在下面的例子中,我们会在 Spark 中执行 MySQL 查询,这个查询速度比直接在 MySQL 上执行速度要快 5 到 10 倍。
另外,Spark 可以增加“集群”级别的并行机制,在使用 MySQL 复制或者 Percona XtraDB Cluster 的情况下,Spark 可以把查询变成一组更小的查询(有点像使用了分区表时可以在每个分区都执行一个查询),然后在多个 Percona XtraDB Cluster 节点的多个从服务器上并行的执行这些小查询。最后它会使用map/rece 方式将每个节点返回的结果聚合在一起形成完整的结果。
热心网友
时间:2022-04-30 01:48
SELECT
T1.custoumerId,
T1.fullName,
T1.deptName,
cab.countCabinet,
ex.equipheight,
ser.sHeight
FROM
(SELECT
cus.idccustomerId AS custoumerId,
cus.fullname AS fullName,
de.deptname AS deptName
FROM
IDC_Customer cus
LEFT JOIN
RMM_Cabinet c
ON (cus.idccustomerId=c.customerid)
LEFT JOIN
SMM_Department de
ON cus.branch=de.deptid
WHERE
cus.fullname LIKE '%%'
GROUP BY cus.idccustomerId) AS T1
LEFT JOIN
(SELECT customerid,count(*) AS countCabinet FROM RMM_Cabinet WHERE applyCabinetType=0 GROUP BY customerid) AS cab
ON T1.custoumerId=cab.customerid
LEFT JOIN
(SELECT idccustomerId,sum(equipheight) AS equipheight FROM RMM_ExchangeServer WHERE isdel=0 GROUP BY idccustomerId) AS ex
ON T1.custoumerId=ex.idccustomerId
LEFT JOIN
(SELECT idccustomerId,sum(serverHeight) AS sHeight FROM RMM_Server WHERE isdel=0) AS ser
ON T1.custoumerId=ser.idccustomerId
试一下这个吧!
热心网友
时间:2022-04-30 03:22
cus.fullname 不是GROUP BY的表达式啊
你确定你这sql能执行吗?