标签: query-performance

在我的解释声明中有哪些派生表

如何确定EXPLAIN结果中列出的派生表?我派生的表似乎没有任何可以使用的密钥,我认为这意味着需要进行一些优化.

选择声明:

EXPLAIN SELECT * 
FROM vw_environment_deployment_statuses v
  WHERE asset_id=47;
Run Code Online (Sandbox Code Playgroud)

查看SQL:

SELECT
  `ac`.`asset_id` AS `asset_id`,
  `es`.`environment_id` AS `environment_id`,
  `d1`.`deployed_date` AS `last_deployed_date`,
  `d1`.`revision` AS `last_deployed_revision`,
  `d2`.`deployed_date` AS `last_successful_deployed_date`,
  `d2`.`revision` AS `last_successful_deployed_revision`,
  `e`.`acronym` AS `environment`,
  `v3`.`count_is_failed` AS `last_deployed_is_failed`
FROM (((((((((`asset_configurations` `ac`
  JOIN `vw_deployments` `d1`
    ON ((`ac`.`id` = `d1`.`asset_configuration_id`)))
  JOIN `vw_deployments` `d2`
    ON ((`ac`.`id` = `d2`.`asset_configuration_id`)))
  JOIN `servers` `s`
    ON ((`ac`.`server_id` = `s`.`id`)))
  JOIN `environments_servers` `es`
    ON ((`s`.`id` = `es`.`server_id`)))
  JOIN `environments` `e`
    ON ((`es`.`environment_id` = `e`.`id`)))
  JOIN `vw_last_environment_deployment_statuses` `v1`
    ON (((`ac`.`asset_id` = …
Run Code Online (Sandbox Code Playgroud)

mysql query-performance

3
推荐指数
1
解决办法
3847
查看次数

查询流程性能计数器的最佳性能是什么?

我试图实现一个性能监视工具,我想监视内存和CPU等基本内容.

我试图通过使用性能计数器这样做,因为我相信这是在C#中查询进程性能的"正确"方法,这是一些示例代码:

class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                var pcs = Process.GetProcesses()
                    .Select(p => new PerformanceCounter("Process", "Working Set - Private", p.ProcessName));

                var sw = Stopwatch.StartNew();

                foreach (var pc in pcs)
                    pc.NextValue();

                Console.WriteLine($"Time taken to read {pcs.Count()} performance counters: {sw.ElapsedMilliseconds}ms");

                Thread.Sleep(1000);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

所以很明显〜在我的系统上查询进程大约12.5毫秒是不可接受的慢.它应该如何完成?

我已经在这篇文章中提到了一个相关问题:性能计数器读取访问速度非常慢 - 任务管理器如何做到这一点?

但我意识到我在那篇文章中并不够具体,并且问了错误的问题.我真的想知道我怎么能用性能计数器做我想做的事情,或者根本不可能做到这一点?

编辑1:

我正在运行Windows 10 Pro 1607 - Build 14393.479

c# windows performance performancecounter query-performance

3
推荐指数
1
解决办法
1204
查看次数

我应该在这些列上创建索引吗?

我的数据库中有一些列,大多数是varchar 255s.它们只被访问一次,但是对于登录用户,每次加载/请求时它们被加载一次.(大多数情况下它们包含用户偏好等内容).

我的问题是,我应该在这些列上创建索引吗?我已经在其他列上获得了索引,这些索引在多个查询中使用,而不是只读取一次并像这些列一样存储.

mysql indexing performance query-performance

2
推荐指数
1
解决办法
64
查看次数

优化查询.想要在不使用子查询中的max的情况下选择最后一条记录

这是我的查询:

SELECT B.RECORDID, A.ITEMCODE, A.ITEMNAME, A.STOCKINHAND, B.SALEPRICE 
FROM ITEMMASTER A, STOCKENTRY B 
WHERE A.ITEMID = B.ITEMID 
  AND RECORDID = (SELECT MAX(RECORDID) FROM STOCKENTRY 
                  WHERE ITEMID = A.ITEMID) 
  AND A.STOCKINHAND > 0 
  AND B.SALEPRICE > 0 
  AND B.INVOICEDATE IS NOT NULL 
ORDER BY A.ITEMNAME, B.INVOICEDATE;
Run Code Online (Sandbox Code Playgroud)

表B(StockEntry)可能包含一个或多个记录,而表A(ItemMaster)肯定只有一个ItemID的行.

如果我删除WHERE子句中的子查询,它将显示一行或多行.我觉得通过WHERE子句中的子查询选择max(RecordID)会降低查询速度.我在RecordID,InvoiceDate,ItemID上有索引,但MySQL日志仍显示此查询效果不佳.由于某种原因,我无法更改列序列.

有没有更好的方法来优化此查询?

mysql sql query-performance greatest-n-per-group

2
推荐指数
1
解决办法
1335
查看次数

如何让这个SQL查询更快?

我有一个表user_notifications有1100000条记录,我必须运行以下查询,但完成查询需要3分钟以上才能改善获取时间.

SELECT `user_notifications`.`user_id`
FROM `user_notifications`
WHERE `user_notifications`.`notification_template_id` = 175
AND (DATE(sent_at) >= DATE_SUB(CURDATE(), INTERVAL 4 day))
AND `user_notifications`.`user_id` IN (
  1203, 1282, 1499, 2244, 2575, 2697, 2828, 2900, 3085, 3989,
  5264, 5314, 5368, 5452, 5603, 6133, 6498..
)
Run Code Online (Sandbox Code Playgroud)

IN块中的用户ID 有时高达1k.

为了优化我已经索引user_id和表中的notification_template_iduser_notification.

在此输入图像描述

mysql sql query-performance

2
推荐指数
1
解决办法
98
查看次数

在WHERE中使用Oracle内置UPPER函数会导致SELECT语句的性能不佳?

我们的Oracle数据库应用程序包含一个名为PERSON
This Table的表包含一个名为的列.PERSON_NAME
此外,我们INDEX在此列上有一个加速SELECT使用此列的列

所以当我们使用以下SQL语句时性能很好

SELECT *
FROM PERSON
WHERE 1=1
AND PERSON_NAME = '  Yajli  '
;
Run Code Online (Sandbox Code Playgroud)

但在某些商业案例中,
我们需要通过搜索来PERSON_NAME区分大小写

所以我们尝试遵循SQL语句

SELECT *
FROM PERSON
WHERE 1=1
AND UPPER(PERSON_NAME) = UPPER('  YajLi  ')
;
Run Code Online (Sandbox Code Playgroud)

但它导致我们的BAD性能和SELECT查询在这种情况下需要花费很多时间

任何帮助如何一起提高SELECT两种情况的性能
*搜索方式PERSON_NAME不区分大小写
*搜索PERSON_NAME方式区分大小写

sql oracle sqlperformance query-performance sql-tuning

2
推荐指数
1
解决办法
2876
查看次数

是否应该用临时表替换所有子查询?

我一直在研究一种解决方案(在SQL Server中),其中所有没有异常的子查询都已使用临时表重写,以提高性能.

举个例子,所有的查询都是这样的:

SELECT something 
FROM (SELECT * FROM T1 WHERE condition1) 
JOIN ...
Run Code Online (Sandbox Code Playgroud)

被重写为这样:

SELECT * 
INTO #tempTable 
FROM T1 
WHERE condition1

SELECT something 
FROM #tempTable  
JOIN ...
Run Code Online (Sandbox Code Playgroud)

这里还建议所有子查询都应该避免使用临时表.

基于给定的事实,是否应该用临时表替换所有子查询?如果不是什么时候应该考虑另一个?

sql sql-server query-performance

2
推荐指数
1
解决办法
2793
查看次数

Graph数据库中搜索查询的时间复杂度是多少?

Graph数据库(特别是Neo4j)中搜索查询的时间复杂度是多少?

我和我有关系数据.我很困惑使用Relational数据库Graph数据库来存储该数据.因此,我希望根据特定数据库的查询的性能和时间复杂性来存储数据.但是,我无法找到Graph数据库查询的性能和时间复杂度.

谁能帮我吗 ?

relational-database time-complexity neo4j graph-databases query-performance

2
推荐指数
1
解决办法
1089
查看次数

优化查询以获得更好的性能

所以我有这个功能.

假设我有数百万的帖子.

我该如何优化此功能?

def fun
  Post.all.each do |post|
    if post.user.present?
       post.active = true
    else
       post.active = false
    end
    post.save
  end
end
Run Code Online (Sandbox Code Playgroud)

就像这样做更少,具有更好的性能,因为这不是一个非常好的方法.

ruby performance ruby-on-rails query-performance ruby-on-rails-4

2
推荐指数
1
解决办法
71
查看次数

SQL联接vs子查询-性能差异

什么是更快执行-编写联接或执行子查询?喜欢

select * 
from table A 
where A.fieldAValue =(select fieldAValue from table B where fieldXValue =101) ; 
Run Code Online (Sandbox Code Playgroud)

我的理由是,选择正确的sql的决定还取决于表中数据的结构/定义方式。我是对还是错?

sql oracle query-performance

2
推荐指数
1
解决办法
177
查看次数