首页 > 数据库 >记一次sql查询慢的原因分析(金仓)

记一次sql查询慢的原因分析(金仓)

时间:2023-11-22 17:33:05浏览次数:35  
标签:金仓 sql 查询 time where id

在进行数据筛选时,遇到了一个处理4000万条数据的问题(时序数据),在发现这个表很大后,就对其加了索引,然后金仓执行以下sql

SELECT A,B,C,time
FROM Table
WHERE id = #{param.id}
ORDER BY time

 

 ,但是发现并没有什么用,查询时间需要7秒左右,就很超乎我的想象,但是有时候就会特别快,大概50ms左右。情况很奇怪。但在前后端交互时,稳定7秒左右我最初怀疑是前端接收时数据过大导致不能正常接受处理的问题(正常情况下返回1500多条数据),用swagger测试的时候也只能显示Raw中,不能显示在“相应内容”中,于是在代码执行时加入记录执行时间的代码,

        // 开始时间
        long stime = System.currentTimeMillis();
        // 执行方法
        A.selectAll();// 结束时间
        long etime = System.currentTimeMillis();

发现确实是sql执行慢的问题,于是开始优化sql由于该参数是时序参数,就想着只保留到分钟查询的话便会减少很多查询

SELECT 
CONCAT(LEFT(time,16),':00') as time,
A,B,C
FROM Table
WHERE id = #{param.id}
ORDER BY time

但是结果并没有什么变化,依旧需要的查询时间为6秒左右。。。

经过一系列操作之后,最终没有解决,但是忽然发现一个问题,

where id = 1
和
where id = '1'

在mybatis框架中这两种不同的查询都能得到相同的结果,但是其在数据库中的执行方式确实不同的

就是我们的生产环境和本地环境的不同,生产环境的金仓数据库在执行 

where id = 1 时不会走索引,就导致即使我们加了索引,仍然是全表扫描

where id = '1'执行这个会走索引

就是我们的生产环境和本地环境的不同,生产环境的金仓数据库在执行 

但是我在本地测试的时候不会复现这个问题,个人排查了一下,两个数据库并没有什么不同。

于是在查询的代码中进行修改

SELECT A,B,C,time
FROM Table
WHERE id = '${param.id}'
ORDER BY time

然后变能解决本次问题。

标签:金仓,sql,查询,time,where,id
From: https://www.cnblogs.com/kanolover/p/17824501.html

相关文章

  • sqlalchemy快速使用,sqlalchemy原生操作,sqlalchemy操作表,一对多关系,多对多关系,scoped线
    1sqlalchemy快速使用......
  • sql 周的提取表达
    MySQL #mysql专用:#周日开始concat(str_to_date(concat(yearweek(apply_date),'Sunday'),'%X%V%W'),"~",date_add(str_to_date(concat(yearweek(apply_date),'Sunday'),'%X%V%W'),interval6day))ASAPPLY_WEE#周一......
  • 【jsp】mysql 封装类
    【jsp】mysql封装类大家拿着就能使用  packagebean;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;publicclassDBUtil{static{//MySQL5.7......
  • Oracle创建查询账户,并授予查询其他用户表权限
    要在Oracle数据库中创建新的查询用户,以便可以访问表和视图等信息一、登录DBA权限的账号1、可以使用命令窗口登录,进行数据库管理connsys/sys123assysdba;2、也可以使用plsql登录以上两种方式自选其一登录。二、新建表空间、用户此部分操作由于在另一篇随笔中有详细记录......
  • 老知识复盘-SQL从提交到执行到底经历了什么
    一、什么是SQLsql(StructuredQueryLanguage:结构化查询语言)是高级的费过程化编程语言,允许用户在高层数据结构上工作,是一种数据查询和程序设计语言,也是(ANSI)的一项标准的计算机语言.but...目前仍然存在着许多不同版本的sql语言,为了与ANSI标准相兼容,它们必须以相似......
  • 磁盘管理(性能参数查询!!!!!!!!!!!)
    别瞎捣鼓,这些才是Linux磁盘管理命令精华!点击关注......
  • 服务器性能参数查询(top、free、uptime等其他)
    Linux常用的性能指标命令原创 Reathin 沐雨花飞蝶 2023-11-2008:20 发表于江西收录于合集#linux7个#linux系统2个沐雨花飞蝶一位咸鱼Coder的学习、生活与见闻102篇原创内容公众号 uptimeuptime命令用于显示系统的运行时间和平均负载。......
  • 14-基础SQL-DCL(数据控制语言)
    DCL-介绍DCL英文全称是DataControlLanguage(数据控制语言),用来管理数据库用户、控制数据库的访问权限DCL-管理用户查询用户(用户信息通常保存在mysql数据库下的user表)USEmysql;SELECT*FROMuser;创建用户CREATEUSER"用户名"@"主机名"IDENTIFIED"密码";......
  • MySql存储树形结构,Java实现根据节点找到父节点,根据节点找到子节点
    目录数据表设计生成树(递归方式)根据节点cId返回所有的父节点pId数据表设计idparent_idnamelevel10食物121蔬菜231水果242茄果类352叶菜类363浆果类373瓜果类384番茄494辣椒4105生菜4116桑葚4id......
  • MySQL数据类型
    数据类型1.MySQL中的数据类型类型类型举例整数类型TINYINT,SMALLINT,MEDIUMINT,INTBIGINT浮点类型FLOAT,DOUBLE定点数类型DECIMAL位类型BIT日期时间类型YEAR,TIME,DATE,DATETIME,TIMESTAMP文本字符串类型CHAR,VARCHAR,TI......