生产环境常用的sql

测试环境SQL vs 生产环境SQL:3个致命差异,90%的团队都栽了! 【摘要】文章揭示了测试环境与生产环境SQL性能差异的三大核心问题:1)数据量差异导致执行计划不同(测试环境全表扫描快,生产环境索引扫描慢);2)数据库配置参数不一致(如COMPATIBLE_MODE)引发结果异常;3)统计信息未更新造成优化器误判。通过真实案例(电商系统查询从0.1秒骤增至10秒)说明环境差异可能引发系统崩溃,并提出五大解决方案:模拟生产数据量、统一环境配置、定期更新统计信息、分析执行计划差异、自动化环境验证。最终指出90%的SQL问题源于对"测试-生产环境差异"的忽视, 阅读详情

1、替换函数REPLACE()

REPLACE(String,from_str,to_str) 即:将String中所有出现的from_str替换为to_str。

三个参数可以是字符或二进制数据类型;from_str不能为空字符串 ('');不支持 text,ntext类型字段的替换

如果其中的一个输入参数数据类型为 nvarchar,则返回 nvarchar;否则 REPLACE 返回 varchar。

如果任何一个参数为 NULL,则返回 NULL。

查询
SELECT REPLACE('abcdefg bcd','bcd','xxx')
select city_name,REPLACE(city_name,'市','') as city from tmp_city
更新
update T_RISK set FILE_PATH = REPLACE (FILE_PATH,'webs','web') where FILE_PATH is not null;

2、表锁

锁表

锁全表:select * from tablename where 1=1 for update
锁部分行:select * from tablename where 字段1=参数1 for update

解锁

--查看被锁的表 
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
--查看那个用户那个进程造成死锁
select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
--杀锁
alter system kill session 'sid,serial#';

 3、查询索引

根据表名查表的索引

 select INDEX_NAME,INDEX_TYPE FROM USER_INDEXES WHERE table_name='T_MCHT_ORDER_PAY_SERIAL';

根据索引名查索引详细信息

select dbms_lob.substr(dbms_metadata.get_ddl('INDEX','IND_T_MCHT_ORDER_PAY_SERIAL_ID'))from dual;

 修改唯一索引

--修改唯一索引
--从BIZ_TYPE, ORG_PARTY_NO
--变更到BIZ_TYPE, ORG_PARTY_NO, SUB_BIZ_TYPE

--delete  indexes 
drop index IDX_CHARGE_PARTY_CONFIG;

-- Create/Recreate indexes 
create unique index IDX_CHARGE_PARTY_CONFIG on T_CHARGE_PARTY_CONFIG (BIZ_TYPE, ORG_PARTY_NO, SUB_BIZ_TYPE)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );

4、修改表

modidy修改字段属性

--单个字段
alter table table_name modify column column_name varchar(255) default '' COMMENT '注释';
--多个字段
alter table student modify(id number(4),studentName varchar2(100));

如果字段有数据,且类型不能直接修改,可以先修改原字段名SUB_ORG为SUB_ORG_COPY,新增字段SUB_ORG(目标类型),把SUB_ORG_COPY中的数据转换复制给SUB_ORG,删除SUB_ORG_COPY

UPDATE 表名 SET SUB_ORG = CAST(SUB_ORG_COPY AS VARCHAR2(30));

alter添加字段

alter table T_CHARGE_PARTY_CONFIG add (SUB_ORG_NO VARCHAR2(32));

-- 修改表名 

rename table old_table to new_table;
或
alter table old_table rename as new_table;


-- 修改列名称

alter table table_name  change column old_name new_name varchar(255);


5、数据类型转换函数

and to_char(crt_time, 'yyyyMMdd') >='20181101'
and crt_time >=to_date('2018-11-01 00:00:00','yyyy-mm-dd hh24:mi:ss')

6、常用系统sql

--查看数据库版本
select * from v$version;  

7、Mysql设置创建时间字段和更新时间字段自动获取时间,填充时间

1、引言
在实际开发中,每条数据的创建时间和修改时间,尽量不需要应用程序去记录,而由数据库获取当前时间自动记录创建时间,获取当前时间自动记录修改时间。

2、创建语句
(1)–添加CreateTime 设置默认时间 CURRENT_TIMESTAMP

    ALTER TABLE `table_name`
    ADD COLUMN `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ;
(2)–修改CreateTime 设置默认时间 CURRENT_TIMESTAMP

    ALTER TABLE `table_name`
    MODIFY COLUMN `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ;
(3)–添加UpdateTime 设置 默认时间 CURRENT_TIMESTAMP 设置更新时间为 ON UPDATE CURRENT_TIMESTAMP

    ALTER TABLE `table_name`
    ADD COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间' ;
(4)–修改 UpdateTime 设置 默认时间 CURRENT_TIMESTAMP 设置更新时间为 ON UPDATE CURRENT_TIMESTAMP

    ALTER TABLE `table_name`
    MODIFY COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间' ;

8、mysql取整函数

ROUND(X) -- 表示将值 X 四舍五入为整数,无小数位
    ROUND(X,D) -- 表示将值 X 四舍五入为小数点后 D 位的数值,D为小数点后小数位数。若要保留 X 值小数点左边的 D 位,可将 D 设为负值。

 SELECT ROUND('123.456')
  123

   SELECT ROUND('123.456',2)
  123.46

  FLOOR(X)表示向下取整,只返回值X的整数部分,小数部分舍弃。

 SELECT CEILING('123.456')
  123

  CEILING(X) 表示向上取整,只返回值X的整数部分,小数部分舍弃。

 SELECT CEILING('123.456')
  124

9、mysql字符串拼接、截取函数

CONCAT(string1,string2,…),此处是直接把string1和string2等等的字符串拼接起来(无缝拼接

CONCAT_WS(separator,string1,string2,…),但是可以多个字符串用指定的字符串进行拼接(带分隔符拼接

substring(str,index,len) 截取str,从index开始,截取len长度,index从1开始,设0返回空

为什么你的SQL在测试环境“飞起“,一到生产环境就“翻车“?——测试与生产环境不一致的血泪史 摘要: 测试环境与生产环境不一致常引发三大问题:1) 数据量差异导致性能陷阱,测试SQL在生产环境变慢;2) 权限宽松导致生产环境权限不足;3) 表名不一致引发SQL报错。解决方案包括:模拟生产数据量(LIMIT控制)、严格权限管理、使用视图统一表名。真实案例显示,环境对齐可将故障恢复时间从2小时降至秒级。核心建议:测试环境应作为生产环境的镜像,开发者需主动确保环境一致性,避免数据丢失与系统崩溃。 (字数:150) 阅读详情

相关推荐

使用VLC库实现视频播放器(WPF版)

使用wpf制作一个视频播放器 一、 LibVLCSharp介绍 LibVLCSharp是基于VideoLAN的LibVLC库的.NET平台的跨平台音频和视频API。它提供了一个全面的多媒体API,可以跨移动、服务器和桌面使用,以呈现视频和输出音频。支持Mono、.NET Framework和.NET核心运行时。在vs工具中,只需要安装截图中得两个nuget包。 二、视频播放器的实现 视频播放器的实现需要用到两个比较nuget包中提供的类,MediaPlayer类。MediaPlayer类型用于控

cangqiongxiaoye的博客 1万+

SQL 常用的字符串函数

SQL 常用的字符串函数 1.replace:替换函数 replace(string,from_str,to_str) 即:将string中所有出现的from_str替换为to_str 2.left: left:(string,2) 从边选取两个 3.right: right(string,2) 从右边选取两个 4.mid: mid(string,3,lenght)从第三个字符开始选取length个,length不写默认取剩余所有字符 5.substring:字符串,起始下标,长度 返回提取的字符串,

followmefollowme的博客 9900

【深度排查】VScode 远程 SSH 连接失败:从网络握手到服务部署的全链路诊断指南

本文详细解析了VScode远程SSH连接失败的常见原因及解决方案,从基础网络排查到SSH服务配置,再到VScode特有的问题处理。特别针对Ubuntu和TrueNAS系统提供了具体配置建议,帮助开发者快速解决'Could not establish connection'等连接问题,提升远程开发效率。

weixin_30301449的博客 447

mysql之生产常用sql语法

目录 1、sql语法分类 2、mysql语法规范以及信息查询 3、mysql用户创建以及赋权限语法 4、mysql数据库操作语法 5、msyql常用数据类型 6、msyql表的操作 7、msyql数据的操作 8、msyql经典面试案列 9、msyql数据库引擎 摘要:本文档详细介绍了生产环境中常用的mysql语法以及注意事项 1、sql语法分类 SQL语言:Stru...

君永夜 416

关于StartAI本地部署相关问题解答

很多小伙伴们都有接入自己本地SD的需求,对此小编整理了一些相关问题~

HDJ9387的博客 940

基于Openrouter的API调用免费大模型

Openrouter 是一个 AI 模型聚合平台,整合了全球 200 多种主流 AI 模型,包括 GPT-4、Claude、Gemini 等,以及国产通义千问、DeepSeek 等。其核心优势是统一的 API 设计,开发者仅需少量代码即可与多个模型交互,还支持自动路由与回退机制。用户可通过 OpenAI SDK 或 LangChain 调用 Openrouter 中的模型。

MurphyStar的博客 6205

mybatisplus开启sql打印的三种方式

使用: 使用mybatisplus自带的log-impl配置,使用log4j日志框架配置,使用P6spy插件这三种方法打印sql,分别介绍这三种方法的配置方法、应用场景和优缺点。

qq_64680177的博客 2万+

WSL2 Ubuntu 22.04安装NVIDIA驱动避坑指南:从驱动版本选择到CUDA环境验证

本文详细介绍了在WSL2 Ubuntu 22.04中安装NVIDIA驱动和配置CUDA环境的完整流程,包括驱动版本选择、环境变量设置以及常见问题解决方案。通过本指南,用户可以避免常见的安装陷阱,确保GPU加速环境正确配置,适用于深度学习开发和CUDA编程。

weixin_28419039的博客 464

MyBatis-Plus分析打印SQL(开发环境)

项目创建、POM依赖、YML配置、SPY配置、SQL打印

tongxin_tongmeng的博客 814

【AI平台】n8n入门2:第一个工作流,调用本地大模型

n8n是一款开源的,专注于AI工作流构建,支持灵活的自定义与集成。就是可以把大模型和其他工具联合起来,这就厉害了。而且,免费功能又强大,目前很火,来研究一下。

正经教主是个热衷于正经学习分享的教主。 4531

地统计插值学习心得(一)

(创建地统计图层工具用于根据现有的地统计图层或者地统计模型来创建包含新要素数据集的地统计图层,也就是使用构建好的地统计模型用到新的数据集中)这表明,远离极值的区域预测不受极值的影响,并且还表明,包括极值会导致钼元素浓度高的区域周围的预测明显变高。通常,我们使用同一个数据集进行建模和预测,但是在实际插值过程中,这两步的数据可以是不同的,这就是处理极值的诀窍。如果你的数据集有无法忽略的极值时(比如这些钼元素浓度),一种常见的方法是首先显式移除极值进行建模,然后在预测中使用整个数据集(包括极值)。

JData_Engineer的博客 287

SpringBoot中 [info]日志级别 打印mybatis sql语句 通过 logback 添加配置的方式

问题描述 在 Spring Cloud 项目中,生产环境需要打印mybatis的sql语句日志,但是mybatis打印的sql的默认日志级别是[debug],如果生产环境想看到sql语句,就必须开启[debug]级别的日志打印,这样做debug日志量过大。 解决方式 logback.xml <logger name="com.xmb" level="INFO" additivity="false"> <appender-ref ref="console" /> &lt

fendouweiqian的博客 4737

C#跨平台制图新纪元:Mapsui,一库在手,地图我有

深入学习Mapsui的渲染机制,定制属于你的地图样式,无论是颜色、图标还是文字,都可以随心所欲。

java专栏 1457

在生产环境测试一下sql的耗时情况

在生产环境中,测试 SQL 查询的耗时可以通过多种方法实现,从简单的 `EXPLAIN` 和 `SHOW PROFILE` 到使用 MySQL 慢查询日志和专门的性能监控工具。`long_query_time` 设置了查询执行时间的阈值,只有超过这个时间的查询才会被记录到慢查询日志中(单位为秒)。`BENCHMARK()` 函数允许你反复执行一个 SQL 查询,并返回执行的时间,适合于测试查询的相对性能。其中,`1` 是查询的 ID,`SHOW PROFILES` 会列出所有查询的 ID。

weixin_47495688的博客 575

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

生产环境下,慢 SQL 问题排查

在排查线上定时任务连续失败的问题时,发现一条慢SQL导致性能瓶颈。该SQL用于查询买卖家之间的关联关系,但由于不符合最左前缀匹配原则,导致全索引扫描,执行效率低下。通过分析表的索引结构,发现联合索引的字段顺序不合理。解决方案是增加一个包含subject_id_enum、product_type_enum、buyer_id和seller_id的新索引,或调整SQL查询条件。优化后,SQL执行效率显著提升,定时任务成功执行。

Balance 637

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【性能优化】MySQL 生产环境 SQL 性能优化实战案例

最近在处理一个项目时,发现在生产环境的工作流相关接口中,某些查询的执行时间异常缓慢,尽管数据量仅为 2 万条。尤其是在添加后,查询时间显著增加,达到了 ⏳。我们需要深入分析并优化此查询。

日常记录 1375

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

在生产环境中安全执行更新删除SQL脚本的技巧

今天在生产环境上解决问题,由于广发银行的管理制度是开发公司是不允许确生产环境的,所以我们只能把要更新的语句发给运营中心,由运营中心的投产人员执行,我们则在旁边看着;在他执行的时候发现了一个很有趣的技巧,现在分享出来。 我们知道每一次在生产环境中执行中执行更新删除语句的时候都要格外小心,要做好数据备份,但是即便这样对于一个做了分库分表设计,有十几个G的库来说更新一句SQL后发现忘记写WHERE语句...

从心所欲,不逾矩 148

处理生产环境慢SQL

慢sql

qq_58968195的博客 835

php sql 监听,Laravel给生产环境添加监听事件(SQL日志监听)

本文主要给大家介绍的是关于Laravel给生产环境添加监听事件(SQL日志监听)的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:laravel版本:5.2.*一、创建监听器php artisan make:listener QueryListener --event=Illuminate\\Database\\Events\\QueryExecutedorsudo /usr/loca...

weixin_39799290的博客 279

在java里面,mongodb template如何打印sql,推荐一个生产环境下可用的方案

在 Java 中使用 MongoDB Template 时,可以通过以下方式打印 SQL: 在 MongoDB Template 中使用 logger 可以使用 Java 的 logger 机制,将 MongoDB Template 中的日志输出到指定的文件或控制台。例如,使用 slf4j 作为日志门面,在配置文件中设置日志级别为 DEBUG,即可在执行 MongoDB 操作时,在日志中看到相...

weixin_35754676的博客 2184

mysql生产环境闪回工具binlog2sql实战

生产环境或者测试环境难免会有误操作情况,这种情况下,一般可以使用闪回工具进行数据恢复,但一般不建议在生产随便使用,一定要保证操作正确,做好数据库备份工作 安装binlog2sql

大龄程序员 329

SQL DELETE语句详解与生产环境最佳实践

DELETE语句作为SQL四大基础操作之一,是实现数据删除的核心命令。其工作原理是通过WHERE条件精确匹配目标记录,执行前会先获取行级锁确保数据一致性。在数据库运维中,合理使用DELETE能实现数据生命周期管理,但错误操作可能导致严重事故。实际应用时需特别注意联表删除、批量删除等场景,结合事务控制和索引优化提升性能。本文通过生产案例解析DELETE语句的正确使用方法,涵盖基础语法、联表操作、分批删除策略等实用技巧,并给出防止误删数据的工程化解决方案。

weixin_30431445的博客 250

复盘之我在金仓生产环境踩过的SQL暗坑,和攒了六年的编码规矩

摘要 本文总结了作者在金仓数据库生产环境中遇到的SQL性能问题及数据安全隐患,通过6个典型案例揭示了常见开发误区:包括SELECT *导致性能劣化、左连接条件错误引发数据差异、隐式转换使索引失效、NOT IN遇空值返回异常、大偏移量分页性能骤降以及UPDATE误操作全表数据。针对这些问题,作者提炼出五年的实战经验,形成一套SQL编码规范,涵盖查询优化、索引使用、分页处理、空值应对等方面,强调语义明确、性能优先和安全意识。文章最后指出规范落地的挑战,建议通过代码审查、执行计划分析和慢SQL巡检等机制确保规范执

优快云博客专家,领域包括但不限于:AI、大数据、Python、架构师,有合作、课程、问题、疑惑请私信博主 1万+

测试环境运行正常的SQL到生产上奇慢无比,最终导致UI访问超时;确定SQL效率无问题,那么就极有可能使生产环境的表数据量较大而且没有做分析。

如题

qihezhiye03的专栏 1571

生产环境与本地环境sql server数据库差异对比

使用 Beyond Compare对比工具。

qq_39072819的博客 71

Electric-SQL 故障排查指南:从本地开发到生产环境

Electric-SQL 故障排查指南:从本地开发到生产环境 【免费下载链接】electric electric-sql/electric: 这是一个用于查询数据库的JavaScript库,支持多种数据库。适合用于需要使用JavaScript查询数据库的场景。特点:易于使用,支持多种数据库,具有灵活的查询构建和结果处理功...

gitblog_00103的博客 316
上一篇: linux安装postgresql数据库
下一篇: ID生成方案&SnowFlake算法
tyw15
博客等级 码龄9年 6粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值