标签: sql-execution-plan

MySQl解释Extra“Using where”的真正含义是什么?

根据MySQL文档,使用where意味着:WHERE子句用于限制哪些行与下一个表匹配或发送到客户端。

据我了解,这意味着如果您的sql语句有where条件,则您的解释中会出现“Using where”额外信息。根据我的经验,这似乎意味着 MySQL 存储引擎发现索引无法覆盖某些列,并且必须检索行数据。例如:

在此输入图像描述

谁能解释一下Using where的真正含义?

mysql explain sql-execution-plan

7
推荐指数
1
解决办法
3849
查看次数

mysql解释不同服务器上的不同结果,同一查询,同一个数据库

经过大量的工作,我终于得到了一个相当复杂的查询,非常流畅地工作,并很快返回结果.

它在开发和测试方面运行良好,但现在测试速度已大大减慢.解释查询在开发上需要0.06秒并且在测试中大致相同,现在测试时间为7秒.

解释略有不同,我不确定为什么这将是dev的解释

-+---------+------------------------------+------+------------------------------
---+
| id | select_type | table      | type   | possible_keys           | key
 | key_len | ref                          | rows | Extra
   |
+----+-------------+------------+--------+-------------------------+------------
-+---------+------------------------------+------+------------------------------
---+
|  1 | PRIMARY     |  | ALL    | NULL                    | NULL
 | NULL    | NULL                         |    5 |
   |
|  1 | PRIMARY     | tickets    | ref    | biddate_idx             | biddate_idx
 | 7       | showsdate.bid,showsdate.date |   78 |
   |
|  2 | DERIVED     | shows      | ALL    | biddate_idx,latlong_idx | NULL …

mysql join sql-execution-plan

6
推荐指数
2
解决办法
3029
查看次数

SQL Server查询计划的差异

当从参数化查询更改为非参数化查询时,我无法理解SQL Server中我的语句的估计查询计划的行为.

我有以下查询:

DECLARE @p0 UniqueIdentifier = '1fc66e37-6eaf-4032-b374-e7b60fbd25ea'
SELECT [t5].[value2] AS [Date], [t5].[value] AS [New]
FROM (
    SELECT COUNT(*) AS [value], [t4].[value] AS [value2]
    FROM (
        SELECT CONVERT(DATE, [t3].[ServerTime]) AS [value]
        FROM (
            SELECT [t0].[CookieID]
            FROM [dbo].[Usage] AS [t0]
            WHERE ([t0].[CookieID] IS NOT NULL) AND ([t0].[ProductID] = @p0)
            GROUP BY [t0].[CookieID]
            ) AS [t1]
        OUTER APPLY (
            SELECT TOP (1) [t2].[ServerTime]
            FROM [dbo].[Usage] AS [t2]
            WHERE ((([t1].[CookieID] IS NULL) AND ([t2].[CookieID] IS NULL)) 
            OR (([t1].[CookieID] IS NOT NULL) AND ([t2].[CookieID] …
Run Code Online (Sandbox Code Playgroud)

sql-server parameterized sql-execution-plan

6
推荐指数
1
解决办法
837
查看次数

有关如何读取SQL执行计划的问题

我已执行查询并包含实际执行计划.有一个Hash Match是我感兴趣的,因为它的子树使用索引扫描而不是索引搜索.当我将鼠标悬停在此Hash Match上时,会出现一个名为"Probe Residual"的部分.我曾认为这是我加入的任何价值观.我在这里是正确的还是有更好的解释?

我遇到的第二个问题是它使用的索引.在我的例子中,我很确定这个特殊的连接正在加入两列.它正在扫描的索引中包含这两列,以及另一个未在连接中使用的列.我的印象是,这将导致索引搜索而不是扫描.我错了吗?

sql sql-server sql-server-2005 sql-execution-plan

6
推荐指数
1
解决办法
3411
查看次数

SQL优化 - 基于约束值的执行计划更改 - 为什么?

我有一个表ItemValue,其中包含运行在2000兼容模式下的SQL 2005 Server上的数据,这些模式类似于(它是用户定义的值表):

ID    ItemCode     FieldID   Value
--    ----------   -------   ------
 1    abc123             1   D
 2    abc123             2   287.23
 4    xyz789             1   A
 5    xyz789             2   3782.23
 6    xyz789             3   23
 7    mno456             1   W
 9    mno456             3   45
                                 ... and so on.
Run Code Online (Sandbox Code Playgroud)

FieldID来自ItemField表:

ID   FieldNumber   DataFormatID   Description   ...
--   -----------   ------------   -----------
 1             1              1   Weight class
 2             2              4   Cost
 3             3              3   Another made up description
 .             .              x   xxx
 .             . …
Run Code Online (Sandbox Code Playgroud)

sql sql-server query-optimization sql-execution-plan

6
推荐指数
1
解决办法
2973
查看次数

SQL Server sp_ExecuteSQL和执行计划

我有一个查询,它在SQL Server Management STudio中是超高速的,并且在sp_ExecuteSQL下运行时超级慢.

这是否与在spExecuteSQL下运行时未执行的执行计划的缓存有关?

sql t-sql sql-server sql-server-2005 sql-execution-plan

6
推荐指数
1
解决办法
5048
查看次数

从派生表移动到临时表解决方案时,为什么性能会提高?

我正在阅读Grant Fritchey的"Dissecting SQL Server Execution Plans",它帮助我了解为什么某些查询很慢.

但是,我很难理解这种情况,简单的重写速度要快得多.

这是我的第一次尝试,需要21秒.它使用派生表:

-- 21 secs
SELECT *
  FROM Table1 AS o JOIN( 
    SELECT col1
    FROM    Table1
    GROUP BY    col1
    HAVING  COUNT( * ) > 1
) AS i ON ON i.col1= o.col1
Run Code Online (Sandbox Code Playgroud)

我的第二次尝试快3倍,只是将派生表移出临时表.现在它快了3倍:

-- 7 secs
SELECT col1
INTO    #doubles
FROM    Table1
GROUP BY    col1
HAVING  COUNT( * ) > 1

SELECT *
FROM Table1 AS o JOIN #doubles AS i ON i.col1= o.col1
Run Code Online (Sandbox Code Playgroud)

我的主要兴趣是为什么从派生表转移到临时表会如此提高性能,而不是如何使其更快.

如果有人能告诉我如何使用(图形)执行计划诊断此问题,我将不胜感激.

Xml执行计划:https: //www.sugarsync.com/pf/D6486369_1701716_16980

编辑1

当我创建关于group by中指定的2 …

sql-server database-performance sql-execution-plan

6
推荐指数
1
解决办法
1948
查看次数

Couchbase查询执行时间?

如何在Couchbase中计算查询时间和查询执行计划.是否有任何实用程序,如Oracle解释计划和Couchbase数据库中的tkprof?

编辑:


我试图看看哪个数据库最适合我的数据.所以我想尝试使用mysql,mongodb,couchbase.我尝试了三个不同数量的条目10k,20k,40k条目.

使用mysql,我可以使用"set profiling = 1"查看查询时间.使用此设置我在三种情况下运行查询1)没有索引主键,2)索引主键3)第二次运行相同的查询(以查看查询缓存的效果)

同样,我使用mongodb运行相同的测试,并以表格格式汇总我的结果.我想用couchbase运行相同的测试,看看它的性能如何.我试图搜索网络,但找不到任何我可以遵循以获得类似结果的内容.

下面是我的表(所有时间都是毫秒).带有大括号()的第二行显示第二次运行的查询时间.

Records Count       Mysql           MongoDB         CouchBase
        ___________________     _______________     ___________
        Without   | With        Without | With      With Index
        Index     | Index       Index   | Index 

10K     62.27325  | 8.537       3311    | 33
        (33.3135) | (3.27825)       (7) | (0)




20K     108.4075  | 23.238      132 | 39    
        (80.90525)| (4.576)     (17)    | (0)



40K     155.074  | 26.26725     48  | 10
        (110.42) | (10.037)     (42)    | (0)


对于couchbase,我想知道使用其密钥检索文档时的性能(类似于memcahed的功能).查询时间也使用其视图.

performance execution-time nosql sql-execution-plan couchbase

6
推荐指数
1
解决办法
4563
查看次数

Hive 解释计划理解

有没有什么合适的资源可以让我们完全理解hive生成的解释计划?我曾尝试在 wiki 中搜索它,但找不到完整的指南来理解它。这是 wiki,它简要解释了解释计划的工作原理。但我需要有关如何推断解释计划的更多信息。 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Explain

hadoop hive explain sql-execution-plan hiveql

6
推荐指数
1
解决办法
2007
查看次数

我如何知道查询中是否使用了任何索引?PostgreSQL 11?

我有点困惑,需要一些建议。我用PostgreSQL 11数据库。我有这么简单的sql语句:

SELECT DISTINCT "CITY", "AREA", "REGION"
    FROM youtube
WHERE
    "CITY" IS NOT NULL
AND
    "AREA" IS NOT NULL
AND
    "REGION" IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

youtube我在 sql 语句中使用的表有 2500 万条记录。我认为这就是为什么查询需要 15-17 秒才能完成。对于我使用该查询的 Web 项目,它太长了。我正在尝试加快请求。

我为 youtube 表创建了这样的索引:

CREATE INDEX youtube_location_idx ON public.youtube USING btree ("CITY", "AREA", "REGION");
Run Code Online (Sandbox Code Playgroud)

在这一步之后,我再次运行查询,但需要相同的时间才能完成。似乎查询不使用索引。我如何知道查询中是否使用了任何索引?

解释分析返回: 在此处输入图片说明

sql postgresql sql-execution-plan postgresql-performance

6
推荐指数
2
解决办法
8799
查看次数