数据库
最新文章
COALESCE中的子查询必须返回NULL而非空结果集,可用MAX()或LIMIT确保一行。子查询重复执行影响性能,建议用LEFTJOIN改写。SQLite不支持子查询作COALESCE参数,需用CASEWHEN或LEFTJOIN替代。
Oracle19cRAC安装权限检测不通过常因路径嵌套、环境变量交叉污染及文件系统权限残留所致。$GRID_HOME和$ORACLE_HOME须为独立路径且属主正确;grid和oracle用户环境变量需严格隔离;root sh执行前需清理残留文件。CVU报PRVG-11250可忽略,应关注ERROR条目。
在SQLServer中,使用索引视图需先用WITHSCHEMABINDING重建视图,再创建唯一聚集索引。必须满足表名两段式、显式列、非确定性函数禁用等约束。建索引后需确保会话SET选项正确,查询时在标准版中需加NOEXPAND提示才能命中索引。
MySQL自增ID不连续是设计故意为之,原因包括事务回滚、唯一键冲突等预占ID不可回收。业务层不应依赖连续性,强行保证连续会引发并发风险、锁表等问题。生产环境应优先保证ID不冲突和数据安全。
在MySQL中,DATE_FORMAT()函数专门用于日期格式化操作,需传入日期值和格式字符串,格式符如%Y与%y大小写敏感。应当仅出现在SELECT列表或展示层,避免在WHERE条件中使用以防止索引失效。处理NULL值需配合IFNULL函数,时区转换请使用CONVERT_TZ()函数。
SQL嵌套查询中常见陷阱:WHERE子句不能直接引用外部表字段,需通过EXISTS或单值子查询实现;LEFTJOIN后对右表字段加WHERE会退化为INNERJOIN,应将过滤条件移至ON子句;IN子查询含NULL时结果为空,宜用EXISTS替代;多表关联建议用CTE拆解,避免中间结果集膨胀。
在Navicat数据同步时,可通过字段映射界面取消勾选敏感字段,或利用SQL表达式进行脱敏处理。务必预览生成的SQL语句,确保INSERT和UPDATE语句中均已移除或替换敏感字段,从而有效防止数据泄露。
删除最新N条数据时,各数据库语法不同:MySQL和PostgreSQL可用DELETEORDERBYLIMIT;SQLite和SQLServer需子查询加IN,其中SQLServer改用TOP;Oracle用嵌套子查询。务必按数据库类型选语法,并为排序字段建索引,否则可能执行失败或性能低下。注意不同数据库差异大,需谨慎操作并测试。
通过Java监控Oracle活跃会话需先确认权限,使用select_catalog_role或显式授权v_$session视图。查询10g+版本可直接用v$session自带字段,JDBC中视图名需加下划线。代码应注意空值检查、超时设置和连接池复用,避免泄漏。生产环境慎用v$session_wait_history和ASH视图,防止OOM或过期数据。
物理备库损坏数据文件时,直接RMAN还原会失败。正确方法为:利用主库备份,通过SWITCHDATAFILE更新控制文件指针,再由MRP自动应用归档修复;或使用CREATEDATAFILE注入空壳文件头后启动MRP自动填充。所有操作需在备库MOUNT状态下进行。
Navicat设计表时中文编码保存失败,根源在于字段级排序规则(COLLATE)优先级高于表级,常因latin1_swedish_ci导致。解决方案:统一连接字符集为utf8mb4,并将字段COLLATE修正为utf8mb4_unicode_ci,同时注意避免全角符号及从微信粘贴中文,以确保中文正常存储。
ARRAY_AGG默认含NULL,需用FILTER排除;排序须在函数内部。返回数组类型,支持数组操作。大表分组聚合变慢,常因work_mem不足触发磁盘临时文件,可临时调大或限制每组数量。
先聚合各组各时间点基础指标,再套用窗口函数LAG()计算环比,需确保时间字段有序、分区一致,并注意防除零。不同数据库对LAG支持有差异,趋势判断应结合绝对阈值和业务对齐,避免仅依赖符号。
物化视图压缩只能在创建时通过COMPRESS参数显式开启,ALTER操作无法生效。若需压缩,可对底层基表执行ALTERTABLECOMPRESSFOROLTP,或重建物化视图。分区级压缩效果更优,且基表是否压缩、日志堆积情况以及刷新方式均会影响空间节省效果。
在SQL查询中模拟ExcelVLOOKUP需使用左连接关联主表与被查找表,通过ON条件匹配字段。如果多匹配导致结果膨胀,可采用子查询结合ROW_NUMBER窗口函数获取首条记录。对于空值替换,使用COALESCE函数,性能优化的关键在于为JOIN字段建立索引。
