环境:
mysql5.6.25
现在我有三张表:
services_log(日志表,大约10万条数据),customer(客户表),sys_dict(字典表)
需要显示日志信息、客户名、字典值
原来sql:
SELECT
a.id AS "id",
a.autorkey AS "autorkey",
a.remote_addr AS "remoteAddr",
a.service_name AS "serviceName",
a.params AS "params",
a.create_date AS "createDate",
a.remarks AS "remarks",
c.hotel_name AS hotelName,
b.label AS servicesLabelName
FROM
services_log a
JOIN sys_dict b ON a.service_name = b.value
JOIN customer c ON a.autorkey = c.author_key
ORDER BY
a.create_date DESC
LIMIT 30
引用
受影响的行: 0
时间: 1.612s
分析发现联表查询导致查询时间变长。
更改如下:
SELECT
a.id AS "id",
a.autorkey AS "autorkey",
a.remote_addr AS "remoteAddr",
a.service_name AS "serviceName",
a.params AS "params",
a.create_date AS "createDate",
a.remarks AS "remarks",
(select c.hotel_name from customer c where a.autorkey = c.author_key) as hotelName,
(select b.label from sys_dict b where a.service_name = b.value) as servicesLabelName
FROM
services_log a
ORDER BY
a.create_date DESC
LIMIT 30
引用
受影响的行: 0
时间: 0.451s
如果需要加入查询条件:
SELECT
a.id AS "id",
a.autorkey AS "autorkey",
a.remote_addr AS "remoteAddr",
a.service_name AS "serviceName",
a.params AS "params",
a.create_date AS "createDate",
a.remarks AS "remarks",
(select c.hotel_name from customer c where a.autorkey = c.author_key) as hotelName,
(select b.label from sys_dict b where a.service_name = b.value) as servicesLabelName
FROM
services_log a
WHERE a.autorkey in (select id from customer where hotel_name like '%长青国际酒店%' )
ORDER BY
a.create_date DESC
LIMIT 30
SQL功底较差,不知有没有其他优化方式?
分享到:
相关推荐
Impala 并发查询缓慢问题解决方案 Impala 是一个基于Apache Hadoop的高性能、实时查询引擎,但是在并发查询时,可能会出现缓慢问题。本文将提供三种改造方案来解决Impala并发查询缓慢问题,并对每种方案进行测试...
### SQL Server 查询速度缓慢的解决之道 #### 一、常见查询速度慢的原因及解决方法 **1. 没有索引或未有效利用索引** - **原因**: 缺乏索引或索引使用不当是导致查询速度慢的主要原因之一。 - **解决方案**: ...
缓慢变化维的定义是指维度数据中的缓慢变化,例如某个销售人员从北京分公司调到上海分公司,这种变化需要被记录和保存,以便在数据分析和报表生成时能正确地反映出这种变化。 缓慢变化维解决方案的目的是为了解决...
不过,在处理大量数据时,若直接渲染所有数据项,会导致el-select组件的渲染性能下降,甚至可能导致界面卡顿。为了解决这一问题,可以通过实现懒加载技术来提升用户体验。本文主要介绍el-select组件在数据量过多时...
mysql用navicat查询数据量大的数据,运行缓慢查不出来,且报超时错误的问题解决
6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。 9、返回了不必要...
在单页面应用中,如果不使用懒加载,使用webpack打包后的应用体积可能会非常庞大,导致首次访问应用时需要加载的资源过多,从而需要较长的加载时间,给用户带来长时间的白屏体验,即便进行了loading效果展示,用户...
当数据库包含大量数据时,执行查询可能会变得极其缓慢,严重影响系统性能。以下是一些关键的优化策略: 1. **索引优化**:创建合适的索引可以显著提高查询速度。主键和外键通常自动带有索引,但你可能需要为经常...
本资料主要探讨了一种基于缓慢变化维(Slower Changing Dimension,SCD)格式的遥信数据压缩存储和查缺补缺方法,以解决大数据量下存储与查询效率的问题。 缓慢变化维是数据仓库中的一个概念,指的是数据表中的某些...
- **连接顺序**:根据表大小和数据分布调整连接顺序,优先处理较小的表或已过滤的表。 - **连接类型**:选择最合适的连接算法(嵌套循环、哈希连接、合并连接等),平衡内存占用与执行效率。 - **分区**:利用表分区...
尽管这类维度的变化较少,但在数据仓库中依然需要记录其历史变化情况。为了实现这一点,可以采用多种方法,例如记录版本号或时间戳等。 在SQL Server 2000中,创建一个简单的维度表示例如下: ```sql -- 创建一个...
"海量数据分页解决方案"就是为了应对这个问题而提出的。在这个demo中,我们主要关注的是如何利用存储过程来实现高效、通用的数据分页功能。 首先,我们需要理解数据分页的重要性。在网页或应用中,一次性加载所有...
有需要的直接下载替换掉start\layui\lay\modules目录下的tree.js文件即可
当查询涉及大量数据时,如果没有合适的索引,数据库管理系统(DBMS)可能需要扫描整个表来获取所需的数据。这种全表扫描非常耗时,尤其是在数据量巨大的情况下。 **解决方法**: - **添加索引**:根据查询条件创建...
为了满足实时性要求较高系统的设计需求,针对串联多个器件在一线制总线上的结构导致的在查询多点温度时速度缓慢的问题,北京铭正同创科技有限公司提出了一种快速查询多点温度的解决方案。本方案以Dallas公司开发的...
解决ie下脚本提示运行缓慢。ie提示脚本执行缓慢解决方案。
在使用Kettle进行数据处理时,尤其是将数据从源系统传输到目标系统的过程中,如果目标系统是Hive2,则可能会遇到表输出速度极其缓慢的问题。根据描述,“kettle在表输出到星环inceptor数据库时,由于选择了DB连接...