
数据库(SQL)随笔
文章平均质量分 54
以实战为线索,偶尔记录并分享我在数据库使用上遇到的问题及解决方案,并非系统性专栏,感兴趣的同学可以关注哈,本专栏永久免费。
Yashar Qian
我之所以告诉你我喜欢你,并不是一定要和你在一起,只是希望今后的你,在遭遇人生低谷的时候,不要灰心,至少曾经有人被你的魅力所吸引,曾经是以后也会是…我从不感觉不计回报的爱是一种卑微,其实这是世间难得勇敢,我因你而雀跃着的心,是你赠予我最宝贵的礼物,正真的喜欢就像是爬到最高的山巅去靠近月亮,我并不是为了占有月亮,而是为了让今夜的月光映在我的身上……
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
对视图进行条件查询,索引还会生效吗?
视图查询能否利用索引取决于视图类型和查询条件。简单视图和物化视图通常能利用基表索引,而包含聚合、计算列或复杂操作的视图可能无法有效使用索引。优化建议包括:确保基表索引、使用物化视图、分析查询计划,以及将条件直接下推到基表。不同数据库系统对此处理存在差异,需参考具体文档。(149字)原创 2025-07-23 18:00:00 · 218 阅读 · 0 评论 -
SQL 中 JOIN 顺序对性能的影响
SQL JOIN 顺序确实影响查询性能,但现代数据库优化器通常能自动选择最优顺序。关键影响因素包括表大小差异、索引可用性和连接类型。当优化器统计信息不准确或查询特别复杂时,手动调整JOIN顺序可能提升性能:优先连接过滤后结果集小的表,确保JOIN列有索引,并使用EXPLAIN分析执行计划。不同数据库系统提供特定优化手段,如PostgreSQL的Leading提示或MySQL的STRAIGHT_JOIN。最佳实践是首先依赖优化器,仅在确认性能问题时才考虑手动优化JOIN顺序。原创 2025-07-22 15:00:00 · 337 阅读 · 0 评论 -
PostgreSQL 中的字段,遇到不等于操作时,索引未命中,如何优化
PostgreSQL中针对"不等于"操作索引失效的优化方案包括:1)查询重写为范围查询或NOT IN;2)创建部分索引(Partial Index)针对特定排除值;3)使用布尔表达式索引;4)构建覆盖索引包含查询列;5)对排除值进行表分区;6)使用Bloom过滤器等多列索引。关键优化策略需结合数据分布分析(通过GROUP BY检查)和EXPLAIN ANALYZE验证索引使用情况,同时考虑查询频率和维护成本。对于高基数列,这些优化效果更为显著。原创 2025-07-22 08:30:00 · 288 阅读 · 0 评论 -
PostgreSQL 中跨类型 JOIN 查询的索引优化策略
PostgreSQL中跨类型JOIN查询的索引优化策略摘要:当需要对int4和text类型的列进行JOIN操作时,可采用三种优化方案:(1)创建转换索引(如b.colum::int4)并重写查询;(2)添加冗余列并建立标准索引;(3)使用表达式索引。最佳方案取决于数据特征,推荐统一列类型或使用转换索引。性能测试显示,有索引的JOIN比无索引快7倍以上。关键是通过EXPLAIN验证是否命中索引,并定期维护表达式索引的统计信息。原创 2025-07-21 17:00:00 · 560 阅读 · 0 评论 -
对于IS NULL 和 IS NOT NULL 的字段如何使用索引提速?
本文介绍了优化数据库中IS NOT NULL查询的索引策略。主要内容包括:1)基础优化方案如标准B-tree索引和函数索引;2)高级策略如筛选索引和覆盖索引;3)各数据库(PostgreSQL/MySQL/Oracle)的特定实现方法;4)性能对比测试显示筛选索引可将查询从顺序扫描优化为索引扫描;5)最佳实践建议包括NULL比例评估、复合索引策略和索引维护。合理应用这些技术可使IS NOT NULL查询性能提升10-100倍,具体效果取决于数据分布和数据库实现。原创 2025-07-20 17:30:00 · 437 阅读 · 0 评论 -
SQL中的EXPLAIN命令详解
EXPLAIN是SQL中用于分析查询执行计划的命令,它能帮助开发者理解数据库如何执行查询,是性能优化的关键工具。下面我将全面介绍EXPLAIN的使用方法和解读技巧。原创 2025-07-20 17:00:00 · 287 阅读 · 0 评论 -
数据库中索引到底对哪些sql操作具有提速作用?
数据库索引能显著提升特定SQL操作的性能,主要包括精确匹配查询(WHERE条件)、范围查询(BETWEEN/比较)、排序(ORDER BY)、分组(GROUP BY)和连接(JOIN)操作。对前缀匹配的LIKE查询('abc%')和唯一性检查也有加速效果。但索引对全表扫描、非前缀LIKE查询('%abc')、使用函数或计算的列查询、NOT IN和OR条件中的非索引列无效。特殊索引(如GIN/GIST)可加速JSON、数组等复杂查询。使用时需注意数据类型匹配、复合索引的最左前缀原则,并定期维护索引。最佳实践是原创 2025-07-15 19:23:59 · 427 阅读 · 0 评论 -
数据库中同一字段同时拥有唯一索引和GIN/GIST索引的影响
摘要:同一字段同时拥有唯一索引和GIN/GIST索引时,数据库会根据查询类型智能选择索引。唯一索引(B-tree)处理精确匹配和约束,GIN/GIST处理文本搜索。两者共存不会冲突,查询优化器自动选择最优索引。实际应用中,这种组合常见于需要唯一性约束和文本搜索的场景(如商品SKU唯一性+描述模糊查询)。需注意索引维护成本和存储开销,建议监控使用频率并根据数据特性优化索引。不同数据库对此支持程度不同,PostgreSQL完全支持这种组合,而MySQL等需替代方案。(150字)原创 2025-07-19 08:00:00 · 281 阅读 · 0 评论 -
PostgreSQL 中的 pg_trgm 扩展详解
PostgreSQL的pg_trgm扩展通过三元组(trigram)技术优化文本搜索,支持模糊匹配、相似度计算和正则表达式查询。核心功能包括将文本拆分为连续3字符组,创建GIN/GIST索引加速搜索。典型应用场景有优化LIKE查询、相似度排序和高级文本搜索。性能上,索引比B-tree大但查询快10-100倍,适合构建"Google-like"搜索,但对短文本和非ASCII字符效果有限。使用时建议结合普通索引,并注意语言处理需求。原创 2025-07-17 17:00:00 · 423 阅读 · 0 评论 -
SQL中对字符串字段模糊查询(LIKE)的索引命中情况
SQL中字符串索引能否用于LIKE查询取决于查询模式和数据库类型。前缀匹配('abc%')通常可以使用B-tree索引,而后缀或包含匹配则不能。不同数据库提供特殊解决方案:MySQL可反向索引处理后缀查询,PostgreSQL需pg_trgm扩展,SQL Server可用全文索引。通用优化建议包括优先使用前缀匹配、检查执行计划,以及对于复杂搜索考虑专用搜索引擎。实际索引使用情况应以EXPLAIN分析为准。原创 2025-07-16 17:00:00 · 401 阅读 · 0 评论 -
在线事务处理OLTP(Online Transaction Processing)负载是什么?
OLTP(在线事务处理)负载是处理高并发短事务的工作类型,特点包括原子性操作、毫秒级响应和小数据量读写,常见于金融、电商等实时业务场景。与OLAP不同,OLTP侧重高频率操作而非数据分析。优化需考虑数据库设计、索引、锁机制和缓存策略,同时面临锁竞争和扩展性挑战。OLTP负载直接影响用户体验,需平衡性能与数据一致性。原创 2025-07-13 10:10:15 · 302 阅读 · 0 评论 -
在SQL中对仅有2个值的int2列设置索引的性能分析
SQL低基数int2列索引效果分析摘要 对仅有0和1两个值的int2(smallint)列创建索引需谨慎评估,通常不建议单独建索引,因50%的选择性导致优化器可能忽略。但在数据极端倾斜(如99:1分布)、作为复合索引首列或使用部分索引/位图索引时可能有效。不同数据库处理方式各异:PostgreSQL自动使用位图扫描,SQL Server支持筛选索引,Oracle适合位图索引。最佳实践包括优先考虑复合索引、部分索引或删除无效索引,并通过EXPLAIN验证实际效果。多数情况下,单独对双值int2列建索引弊大于利原创 2025-07-10 10:01:51 · 383 阅读 · 0 评论 -
SQL 查询中 ORDER BY 的执行顺序
在 SQL 查询中,ORDER BY子句是在SELECT子句之后执行的。原创 2025-04-14 16:45:03 · 412 阅读 · 0 评论 -
不同数据类型在数据库和编程语言之间的对应关系表
不同数据类型在数据库和编程语言之间的对应关系表原创 2025-02-28 10:53:25 · 322 阅读 · 0 评论 -
sql 查询某个字段出现重复的数据
【代码】sql 查询某个字段出现重复的数据。原创 2025-02-28 08:31:36 · 137 阅读 · 0 评论 -
linux mysql 8 大小写敏感问题
由此,我们可以得出,一个好的数据库命名规范是:数据库名、数据表名、表字段名全用小写命名,单词之间用下划线(_)连接。mysql - 命名规范/命名规则/sql规范/sql规则。原创 2024-12-22 10:58:18 · 807 阅读 · 0 评论 -
sql 查询两个字段同时出现重复的数据
sql 查询两个字段同时出现重复的数据。原创 2024-05-11 09:50:09 · 491 阅读 · 0 评论 -
SQL Server 定期自动重新组织索引
SQL Server 定期自动重新组织索引原创 2023-06-09 23:38:31 · 555 阅读 · 0 评论 -
SQL Server 定期自动收缩数据库
SQL Server 定期自动收缩数据库原创 2023-06-09 23:37:02 · 571 阅读 · 0 评论 -
[数据库安全]Mysql 只允许指定IP访问
mysql8.0以后的版本指定IP访问的方式发生了变化。网上大多教程都已经过时。原创 2023-05-18 09:53:30 · 2369 阅读 · 0 评论 -
[运维]如何快速压缩一个数据库的硬盘占用大小(简单粗暴但有效)
在维护网站时我们经常会遇到数据库占用服务器磁盘空间的问题。高端的食材往往只需要采用最朴素的烹饪方式。本文我讲一个简单粗暴但有效的方法。本文以SqlServer为例进行介绍,但所有关系型数据库均适用这个解决方案。数据库文件主要包含3部分内容:数据空间、日志、索引空间。也就是数据表本身的数据。这部分内容的压缩只能靠数据清理。如僵尸用户数据清理。数据清理确实是一个有效的方法。但这不是本文要讲的方法。日志作用是用来记录增删改等对数据库有更新的内容的记录(对数据库的改动),而查询的语句如show、select语句,不原创 2022-12-06 21:51:32 · 1690 阅读 · 0 评论