query-performance相关内容
我不明白为什么有时,计划的总成本可能很小,而查看计划的内部,我们会发现巨大的成本.(确实查询很慢). 有人能解释一下吗? 这是一个例子.显然,代价高昂的部分来自主选择中的一个字段,该字段在子视图上执行 listagg,并且与此子视图的连接条件包含复杂条件(我们可以在一个或另一个字段上连接). |身份证 |操作 |姓名 |行 |字节 |成本 |---------------------
..
我一直在研究一个解决方案(在 SQL Server 中),其中所有子查询无一例外都用临时表重写以提高性能. 举个例子,所有的查询都是这样的: 选择一些东西FROM (SELECT * FROM T1 WHERE condition1)加入 ... 被改写成这样: SELECT *进入#tempTable从 T1WHERE 条件 1选择东西从#tempTable加入 ... 还建议此处
..
我正在使用 INNER JOIN 运行查询,其中规划器决定使用嵌套循环.我发现它与 WHERE 条件有关,因为我尝试使用不同的 WHERE 条件编写查询,因此它返回相同的结果但不使用嵌套循环. 我的问题是,当查询看起来相同,因为它们都返回相同的结果时,为什么规划器决定做出不同的决定?使用嵌套循环,查询在 77 秒内运行,在没有嵌套循环的情况下运行 13 秒,并且在 13 秒内运行的查询非常丑
..
我在 SQL Server 管理工作室上运行这个查询 1 并看到它返回 3 条消息,但在存储过程中有近 10 - 20 条来自统计信息的消息时相同.发生了什么,为什么我会看到它们? SET STATISTICS IO,TIME ON;去选择 [用户 ID],[用户类型],[创建DT],[有效DT]FROM [dbo].[People] ORDER BY [UserId]SET STATISTIC
..
我有一个 SQL 查询喜欢 SELECT Column1, Column2, Column3, **ufn_HugeTimeProcessFunction**(Column1, Column2, @Param1) As Column4从表 1 这个 ufn_HugeTimeProcessFunction 函数针对大表(就行数而言)运行,并且后面有几个计算返回值. 我能否强制 SQL 编译
..
我有一个字段是 varchar(20) 执行此查询时,速度很快(使用索引查找): SELECT * FROM [dbo].[phone] WHERE phone = '5554474477' 但是这个很慢(使用索引扫描). SELECT * FROM [dbo].[phone] WHERE phone = N'5554474477' 我猜如果我将字段更改为 nvarchar,那么它将
..
这是一个关于 SQL Server 2008 R2 的问题 到目前为止,我不是 DBA.我是一名 Java 开发人员,时不时要编写 SQL.(主要嵌入在代码中).我想知道我是否在这里做错了什么,如果是,我可以做些什么来避免它再次发生. 第一季度: SELECT something FROM (SELECT * FROM T1 WHERE condition1) JOIN ... Q
..
让我们有以下数据 IF OBJECT_ID('dbo.LogTable', 'U') IS NOT NULL DROP TABLE dbo.LogTableSELECT TOP 100000 DATEADD(day, ( ABS(CHECKSUM(NEWID())) % 65530 ), 0) 日期发送INTO [日志表]从 sys.sysobjects交叉连接 sys.all_columns
..
我正在尝试在我维护的 Web 应用程序中调试 SQL 超时的来源.我有 C# 代码的源代码,所以我确切地知道正在运行什么代码.我已经将应用程序调试到执行超时的 SQL 代码的行,并观察在 SQL 探查器中运行的查询. 从网络执行此查询时,它会在 30 秒后超时.但是,当我完全按照 Profiler 中显示的方式剪切/粘贴查询并将其放入 SSMS 并运行时,它几乎立即返回.我已将问题追溯到网络
..
在我们的 SQL SERVER 2008 R2 数据库上,我们有一个包含国家/地区的 COUNTRIES 参考表.PRIMARY KEY 是一个 nvarchar 列: 创建表 COUNTRIES(COUNTRY_ID nvarchar(50) 主键,... 其他栏目) 主键包含诸如“FR"、“GER"、“US"、“UK"等值.此表包含最大值.20 行. 我们还有一个包含销售数据的 SA
..
我返回一个查询,执行平均需要 170 秒.我浏览了 PSQL 文档,他们提到如果我们增加 work_mem 性能会提高.即使性能没有提高,我也将 work_mem 增加到 1000 MB. 注意:我索引了所有属于查询的字段. 下面我粘贴了数据库中存在的记录、查询执行计划、查询、结果. 数据库中存在的记录数: event_logs=>从事件中选择计数(*);数数-------
..
我有一个 Oracle 12c 查询,最终将用于 BIRT 报告(在 IBM 的 Maximo Asset Management 平台中). 查询/报告将检索记录如下: 根据用户选择的参数检索工单. 所有参数都是可选的. 出于测试目的,我使用 绑定变量作为参数(在 Toad甲骨文). 工作订单是父母、孩子还是两者都无关紧要. 在检索到的工单中,还要选择这些工单的任何子项.
..
以下查询耗时超过 8 分钟,处理了 900 000 行.它非常慢并且会影响我的产品.我无法确定为什么查询变慢,所有索引都设置正常. 解释SELECT计数(DISTINCT(cinfo.CONTACT_ID))从信息内部联接LTocMapping ON cinfo.CONTACT_ID = LTocMapping.CONTACT_ID在哪里((((((((((cinfo.COUNTRY LIKE
..
我如何优化查询,它将找到所有记录,其中: 有activation_request.date_confirmed 不为空 和 在另一个表中没有相关的字符串值:activation_request.email =user.username 不应返回任何记录 我试过了: 选择电子邮件FROM activation_request lLEFT JOIN user r ON r.u
..
我有以下数据库架构: 表格课程:ID导师_id标题表课程_类别:ID类别编号course_id表类别:ID名称表导师:ID名称表订阅者:IDcourse_id用户身份 我需要制作 1 个 sql 才能获得包含所有类别的课程、该课程的导师以及该课程的订阅者数量.这可以在 1 个查询中完成吗?这应该使用存储过程来完成吗? 解决方案 通过这个查询,你得到你想要的: 选择co.title作为
..
我在 MongoDB 中有一个用户集合,其中包含超过 250 万条记录,共 30 GB.我有大约 4 到 6 GB 的索引.它在具有两个分片的分片环境中,每个分片由副本集组成.服务器专门用于没有开销的 Mongo.总 RAM 超过 10 GB,对于我正在执行的查询类型来说已经足够了(如下所示). 我担心的是,尽管有适当字段的索引,但检索结果的时间是巨大的(2 分钟到高达 30 分钟),这是不
..
关于此主题的问题很多,但所有这些问题似乎都比我目前正在讨论的情况更为复杂,答案似乎并不适用. OHDSI =>\ d record_counts表"results2.record_counts"栏|类型|修饰符------------------------ + ----------------------- +-----------concept_id |整数|架构|文字|table_nam
..
就像许多Postgres n00bs 一样,我们有很多带有外键约束的表未编入索引.在某些情况下,这应该不会对性能造成重大影响-但这有待进一步分析. 我已阅读以下文章: https://www.cybertec-postgresql.com/en/index-your-foreign-key/ 并使用以下查询查找没有索引的所有外键: SELECT c.conrelid :: regc
..
我已经设置了一些表并运行了一个查询.但是在我的解释中,它将在临时表中生成SQL结果(我认为这是由于GROUP BY引起的) 我添加了一些索引来加快查询的速度,但是想知道是否有一种方法可以停止使用临时表,是否还有其他方法可以加快使用索引的查询速度? CartData CREATE TABLE`cartdata`(`IDCartData` INT(11)NOT NULL AUTO_IN
..
我有一个表,其中的列 id,filter1,filter2,time,value 包含数百万条记录.我想获取两个时间戳之间均匀分布的 n 行.如果时间戳之间的记录数少于 n ,我想获取所有记录. 假设 n = 200 ,我当前的查询如下所示 SELECT s.* FROM(选择t.time,t.value,ROW_NUMBER()OVER(OR tBY t.time)as rnk,CO
..