在2017-07-16的文章 区间检索SQL性能优化方法 中,我使用了创建function的方式,来解决匹配不到区间时的buffer gets过多的性能问题。 最近在解决一个客户的多表关联区间检索问题时,又琢磨了一下,发现还是可以直接使用SQL,替代原来的function,SQL还真是博大精深啊。 客户现场类似COUNTRY_IP_RANGE表(保存区间信息)的记录数是5000万,有75万记录要做区间匹配,有一部分数据是匹配不到区间的(随机取20条有10条无法匹配),用普通写法,匹配不到区间时,查一条记录大概要耗时 注: 变量如果超出COUNTRY_IP_RANGE表end_ip1的最大范围,sql会返回"no rows selected";最大范围内匹配不到区间,则返回"no_match"(这与普通写法不一样 索引失效时sql可以慢,但是不可以出错。
几年前,有朋友让我帮忙优化一个SQL:根据IP地址查询对应的国家/地区(根据号码查询归属地也属类似业务)。 SQL代码如下: Select country_code From COUNTRY_IP_RANGE IP WHERE IP.Start_Ip1 <= ip_to_number1(:ip) AND SQL每次最多只返回一条记录。 但是光靠SQL本身已经无能为力。 老虎刘会把那些年优化的SQL(有代表性的)总结出来与SQL优化爱好者分享
个人微信公众号:sql_tigerliu. 几年前,有朋友让我帮忙优化一个SQL:根据IP地址查询对应的国家/地区(根据号码查询归属地也属类似业务)。 SQL代码如下: Select country_code From COUNTRY_IP_RANGE IP WHERE IP.Start_Ip1 <= ip_to_number1(:ip) AND SQL每次最多只返回一条记录。 优化方法 1、首先根据业务规则,增加一个rownum=1的谓词条件,SQL变成: Select country_code From COUNTRY_IP_RANGE IP WHERE IP.Start_Ip1 但是光靠SQL本身已经无能为力。
Oracle中如果需要知道一条SQL是谁执行的,可以通过v$sql的parsing_schema_name字段得到登录的schema名称,相当于SQL和会话登录信息是有绑定的。 但是最近有个SQL Server的需求,需要知道历史SQL的执行者。 如下SQL,可以找到当前SQL Server跑过的SQL,但是没用户信息, SELECT p.refcounts, p.usecounts, sqltext.text FROM sys.dm_exec_cached_plans 咨询了大师,给到的回复是,SQL Server不能通过DMV视图来查询某一个会话执行过的历史SQL,只能采集当前会话正在执行的SQl,不断采集然后保存下来才行。 无论从监控粒度,还是数据统计的角度,SQL和用户信息关联检索还是有用的,可以做到更精细的控制,不太清楚为什么微软官方没给出这样的设计,或者有其他隐藏的功能?
:['.gz$'] 排除以 gz 结尾的文件 harvester_buffer_size 每个harvester的缓存大小,默认是16384 max_bytes 单个日志消息可以发送的最大字节,默认是10MB
这个时候我们需要检索CheckValueString列为NULL值,ResultRemarks(该字段为空的记录) 我会这么写代码 select * from T_Check_InfoDetail where
所谓高级处理,从用户的角度来讲,就是那些对数值进行排序,计算销售总额等我们熟悉的处理;从SQL的角度来讲,就是近几年才添加的新功能,这些新功能使得SQL的工作范围不断得到扩展。 窗口函数就是为了实现OLAP而添加的标准SQL功能。 为了避免混淆,SQL提供了一个用来判断超级分组记录的NULL的特定函数—GROUPING函数。 SQL的基础语法知识大致就是这些,如果你稍微会一点SQL,看到这些代码应该很好理解的。如果你没有编程基础,可能这些代码对于你来说过于难以理解。写的很粗糙,勉强可以用来温习SQL的语法。
在上一篇文章中,我们介绍了 SQL(结构化查询语言)的基本概念,以及它在用户研究中的重要作用。 今天,我们将深入了解 SQL 的基本语法,并通过实际应用场景帮助你更好地理解如何使用 SQL 提取和分析数据。 对于刚开始学习 SQL 的用户研究者来说,掌握这些基础语法和应用技巧,将为你的数据分析工作奠定坚实的基础。 1.SQL基础语法SQL 是一种声明性语言,意味着你只需要告诉它你想做什么,SQL 会帮你去做。在 SQL 中,常用的语法主要包括数据查询、数据过滤、数据排序、数据分组等基本操作。 掌握 SQL 的基本语法和应用场景后,你将能够更精准地分析用户数据,得出有价值的研究结论。无论是用户行为分析、用户细分、留存率分析,还是满意度调查,SQL 都是你必不可少的工具。
朋友推荐了一本书《SQL Cookbook》,翻译过来就是《SQL经典实例》,讲的都是SQL编写层面的案例,例如获得随机数、NULL值判断、求中位数、日期计算等,都是日常工作中可能用到的,但是有些知识点可能稍微模糊 ,用的时候,得琢磨下,或者有些知识点不了解,你不知道通过SQL还可以实现某个功能,借此机会,系统回顾一下SQL相关的开发技能,争取了解之前不知道的,巩固之前模糊的知识点,跟大家共享读书笔记。 第一章 检索数据 1. 在SELECT语句中指定具体的列名,可以确保查询语句不会返回无关的数据。当在整个网络范围内检索数据时,这样做更重要,因为他避免了将时间浪费在检索不需要的数据上。 2. 新的列名被称作别名,他会让检索结果更易于理解,对于一些数据库,可以省略AS关键字,但所有的数据库都支持这个关键字。 3. WORKS AS A ', job) from emp; DB2、Oracle和PG使用竖线进行连接, select ename || ' WORKS AS A '|| job from emp; SQL
在上一篇文章中,我们深入探讨了构造 SQL 代理的过程,以帮助我们通过查询数据库中的数据来回答问题。在本文中,我们将探讨如何通过合并高级分析功能来增强 SQL 代理的功能。 检索增强生成 (RAG) 为了便于您的代理了解如何使用这些功能,我建议采用一种称为检索增强生成 (RAG) 的技术。 此方法有助于根据查询查找相关说明。 此外,我们还讨论了创建一个 RAG 来检索相关的语法指令信息。现在,让我们探讨如何无缝集成这两个组件。 RAG 作为工具 在这篇博客中,我详细介绍了 如何利用SQL 代理与数据库交互等工具。 现在,我的想法是将 RAG 指定为另一个工具sql_db_list_tables。这允许 SQL 代理决定何时浏览相关文档,并在需要时确定最合适的关键字进行搜索。 保持说明清晰至关重要,以确保 SQL 代理了解该工具的用途。
关于使用SQL访问MongoDB的解决方案,网络上已经可以查到很多。 本文将介绍一种由MOQL-Transx开源项目提供的采用sql检索MongoDB的轻量级解决方案。 MOQL-Transx是一个致力于减少开发者学习成本,用SQL语法检索各类数据库的开源项目。 项目包括两个模块,moql-translator用于完成从MOQL(SQL92语法子集)到各类数据库DSL的翻译;moql-querier用于完成对各类数据库以SQL语言检索并获得二维结果的输出。 由于MongoDB并没有一个完整意义上的DSL,故本文介绍的部分主要是使用moql-querier中的MongoDBQuerier类来完成对MongoDB的检索。
SQL进阶-10-用SQL处理数列 在关系型数据库的数据结构中,默认是不考虑数据的顺序。处理有序集合在SQL中不能直接实现,但是可以通过集合和谓词来间接实现处理有序数据的需求。 需求1-生成连续编号 需求 不使用数据库中自带的函数,实现任意长的连续编号序列,比如生成0-99的100个连续编号 SQL实现 先解决一个问题:00-99这100个数字中,0,1,2……9这10个数字分别出现了多少次 生成一个digits表,用来存储各个数位上的数字,因为不管多大的数字都可以由0-9这10个数字组成 ? 通过对两个Digits集合求笛卡尔积得出0-99的数字 select D1.digit + (D2.digit * 10) as seq -- 两位数 from Digits D1 cross join 因为发生换排,9,10,11不再符合要求。因此,为了解决换排问题,需要保证:全部都在同一排 ?
,有python接口,对10亿量级的索引可以做到毫秒级检索的性能。 使用faiss 搭配合适的model和embedding函数,可以帮助我们 构建 人脸识别,相似图片检索,LLM知识库问答,推荐系统召回模块 等应用。 faiss的主要原理是构建base vectors向量数据的index索引,然后利用索引对search vectors 实现 TopK 相似向量检索。 1,Flat:暴力精确检索,全局最优,适合数十万级。 2,IVF100,Flat:倒排暴力检索(100聚类后暴力检索),非全局最优但召回高,适合数百万级。 3, HNSW64: 图网络检索,Hierarchical NSW(Navigable Small World),每个节点64条边,检索复杂度log(logn),适合千万上亿规模以及更大规模的图索引,缺点是构建索引过程较慢
SQL开发中经常会碰到使用LIKE模糊检索的场景,'%'的位置,可能影响索引的正常使用,看到刘老师公众号的一篇文章,介绍了相关场景的改造策略,非常受用,推荐阅读。 ,无法直接通过索引定位数据,只是因为检索列只有object_name,所以用到的是索引快速全扫描,实际还是扫描的所有索引叶子节点, 为了说明清楚,我们检索object_id列,他不在索引中, select (3) ABC在字符串中位置不固定,可以通过改写SQL进行优化。 第一种情况,ABC始终从字符串开始的某个固定位置出现。 可以通过substr函数截取字符串的功能,创建函数索引。 substr(object_name, 1, length(object_name)-4)) like reverse ('%BISAL'); 第三种情况,ABC在字符串中位置不固定,可以通过改写SQL 但是这种IN改写,如果子查询返回的记录数较少,执行效率就可能提高了N倍,但如果较多,改写的效率,可能和之前相差不大了, 虽然以上的'%'有各种改造的方案,但至少都得改写一些SQL,所以还是建议,从需求层面
SQL函数 LOG10 标量数值函数,它返回给定数值表达式的以 10 为底的对数。 大纲 {fn LOG10(expression)} 参数 expression - 数值表达式。 描述 LOG10 返回表达式的以 10 为底的对数值。LOG10 返回一个精度为 21、小数位数为 18 的值。 LOG10 只能用作 ODBC 标量函数(使用大括号语法)。 示例 以下示例返回整数的以 10 为底的对数: SELECT {fn LOG10(5)} AS Log10 0.698970004336018805 以下嵌入式 SQL 示例返回整数 1 到 10 的以 < 11 { &sql( SELECT {fn LOG10(:a)} INTO :b ) if SQLCODE '= 0 { ).Log10() Log-10 of 1 = 0 Log-10 of 2 = .301029995663981195 Log-10 of 3 = .477121254719662437 Log-10
SQL6 删除记录(一) 描述 现有一张试卷作答记录表exam_record,其中包含多年来的用户作答试卷记录,结构如下表: 作答记录表exam_record: start_time是试卷开始时间 submit_time DELETE FROM exam_record WHERE score < 60 AND TIMESTAMPDIFF(MINUTE, start_time, submit_time) < 5; SQL7 TIMESTAMPDIFF(MINUTE, start_time, submit_time) < 5 OR submit_time IS NULL ORDER BY start_time LIMIT 3; SQL8 DELETE FROM exam_record; ALTER TABLE exam_record auto_increment = 1; SQL9 创建一张新表 描述 现有一张用户信息表,其中包含多年来在平台注册过的用户信息 register_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间' ) CHARACTER SET utf8 COLLATE utf8_general_ci; SQL10
具体而言,对SQL流利的专业人士的需求日益增长,而不仅仅是在初级层面。 因此,Stratascratch的创始人Nathan Rosidi以及我觉得我认为10个最重要和相关的中级到高级SQL概念。 示例问题:编写SQL查询以重新格式化表,以便每个月有一个收入列。 , Revenue , SUM(Revenue) OVER (ORDER BY Month) AS Cumulative FROM monthly_revenue 10 INT) | +---------+------------------+------------------+ | 1 | 2015-01-01 | 10
传统向量检索在面对复杂查询时往往力不从心。香港大学团队开源的LightRAG提供了新思路:用知识图谱双层索引重构检索架构,在保持轻量化的同时,让索引速度比GraphRAG快10倍。 一、传统RAG的三大痛点向量检索依赖语义相似度匹配,在实际应用中暴露出明显短板:1.全局问题无解无法回答跨文档的宏观问题,比如"某领域的技术演进路径"2.实体关系缺失忽略知识间的结构化联系,检索结果碎片化 四种查询模式模式适用场景检索方式naive简单事实查询纯向量检索local实体相关问题低层图遍历global宏观趋势分析高层图社区检索hybrid复杂综合查询多路召回+Rerank系统会根据问题特征自动切换模式 API返回完整上下文,便于调试优化支持自定义评估指标(RAGAS框架)六、性能表现基于多个公开数据集的测试结果:指标LightRAGGraphRAG索引速度基准10倍基准1倍查询延迟小于2秒8-15秒准确率提升 云栈社区推荐团队在构建企业级检索系统时,重点关注其双层索引设计和异步处理模式。结尾LightRAG通过工程化手段解决了GraphRAG的性能瓶颈,为企业级知识检索提供了可落地的架构方案。
检索神器 Everything "Everything" 是 Windows 上免费文件名搜索引擎 下载地址 https://www.voidtools.com/zh-cn/ 作用 在我们日常办公中, 想要准确查找或者定位的一个文件,如果利用win10本身的检索系统,查起来那真是简直了,耗时耗力。 Everything,可以很好的帮我们提高这个办公效率。 对比 一、win10自身检索查询 12秒 二、Everything检索查询 0.5秒
127.0.0.1 www.red-gate.com 127.0.0.1 licensing.red-gate.com 127.0.0.1 productlogin.red-ga 如下图: 然后点击数据库中的SQL Prompt 点击Manage License 然后点击Activate 然后打开SQL.Prompt.Keygen.exe,将生成的注册码拷贝到输入框内,然后点击Activate 继续点击