我想知道如何优化我的Doctrine查询,因为我的一些查询太长了.
我不想特别针对我的查询方法,但是我可以将常用方法应用于所有请求,因为我找不到有关此方法的信息.
SQL Optimizer如何处理主键上的Select Distinct?例如
员工表 - (EmpId int primary key,EmpName)
select distinct EmpId from Employee.
考虑到EmpId已经不同,优化器会拒绝不同的关键字吗?
我有一个位于网络中的postgre服务器,我正在使用数据库.我需要查看大量记录(1mil +),每次选择都需要时间.
这是我目前的方法:
DataSet ds = new psqlWork().getDataSet("SELECT * FROM z_sitemap_links");
DataTable dt = ds.Tables[0];
Parallel.ForEach(dt.AsEnumerable(), dr =>
{
new Sitemap().runSitemap(dr[1].ToString(), counter);
counter++;
});
Run Code Online (Sandbox Code Playgroud)
但是当数据库大小增加时,这种方法(在我看来)不会那么有效.你能建议一个更好的方法吗?也许把数据拉成块来处理; 虽然我现在不知道如何处理这个问题.
这是我的查询:
select top 60 * from ABC_Sessions (nolock)
where EntryDate > '06-22-2012 23:59:59'
GROUP BY TargetedID
Run Code Online (Sandbox Code Playgroud)
然后它给了我这个错误:
消息8120,级别16,状态1,行1列"BI_Sessions.SessionID"在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.
有没有人让我知道是否有任何方法可以找出Oracle中存储过程的成本?如果没有直接的方式,我想知道任何替代品.
我发现成本的方式是对存储过程中使用的所有查询进行自动跟踪,然后根据查询执行的频率估算proc成本.
除此之外,我想建议优化我的存储过程,尤其是下面给出的查询.
过程的逻辑:
下面是在我的存储过程中用作游标的动态sql查询.此游标在循环内打开并获取.我获取信息并将它们放入varray中,计算数据然后将其插入表中.
我的目标是找出proc的成本以及优化sp.
SELECT DISTINCT acct_no
FROM raw
WHERE 1=1
AND code = ''' || code ||
''' AND qty < 0
AND acct_no
IN (SELECT acct_no FROM ' || table_name || ' WHERE counter =
(SELECT MAX(counter) FROM ' || table_name || '))
Run Code Online (Sandbox Code Playgroud) oracle performance plsql stored-procedures query-optimization
我有一个如下查询
select
id,name,baseid,member_card_type,membercard_num,last_draw,counter
from details_dest
where datediff(curdate(),basedate)<100;
Run Code Online (Sandbox Code Playgroud)
我已经使用了解释,发现它正在使用基于onate的索引,我认为date_diff是问题所在
所以请建议我有没有其他方法来执行它没有任何功能
请根据表现告诉我哪个更好的datediff()或to_days()
我正在使用mysql 5.5
mysql optimization query-optimization database-administration
我有一个如下所示的查询:
SELECT * from foo
WHERE days >= DATEDIFF(CURDATE(), last_day)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,days是一个INT. last_day是一个DATE专栏.
所以我在这里需要两个单独的索引days和last_day?
我使用的是SQL Server 2012.我有一个包含90列的表.我试图只选择包含数据的列.搜索后,我使用以下程序:
1-使用一个选择查询获取所有列数
2-将结果表旋转到Temp表中
3-创建选择查询
4-执行此查询
这是我使用的查询:
DECLARE @strTablename varchar(100) = 'dbo.MyTable'
DECLARE @strQuery varchar(max) = ''
DECLARE @strSecondQuery varchar(max) = 'SELECT '
DECLARE @strUnPivot as varchar(max) = ' UNPIVOT ([Count] for [Column] IN ('
CREATE TABLE ##tblTemp([Column] varchar(50), [Count] Int)
SELECT @strQuery = ISNULL(@strQuery,'') + 'Count([' + name + ']) as [' + name + '] ,' from sys.columns where object_id = object_id(@strTablename) and is_nullable = 1
SELECT @strUnPivot = ISNULL(@strUnPivot,'') + '[' + name + '] ,' …Run Code Online (Sandbox Code Playgroud) 这是我尝试的SQL查询
SELECT
TransactionNumber,Time
FROM
[HQMatajer].[dbo].[Transaction]
WHERE
Time>='2015-01-01' and Time<='2015-12-31'
Run Code Online (Sandbox Code Playgroud)
总记录返回280万.这需要10秒钟.
我创建了一个索引Time,并TransactionNumber为好.
还有什么我需要做的比这更快的行?
谢谢
我有下表
create table log
(
id bigint default nextval('log_id_seq'::regclass) not null
constraint log_pkey
primary key,
level integer,
category varchar(255),
log_time timestamp,
prefix text,
message text
);
Run Code Online (Sandbox Code Playgroud)
它包含300万行.
我正在比较以下查询:
EXPLAIN SELECT id
FROM log
WHERE log_time < now() - INTERVAL '3 month'
LIMIT 100000
Run Code Online (Sandbox Code Playgroud)
产生以下计划:
Limit (cost=0.00..19498.87 rows=100000 width=8)
-> Seq Scan on log (cost=0.00..422740.48 rows=2168025 width=8)
Filter: (log_time < (now() - '3 mons'::interval))
Run Code Online (Sandbox Code Playgroud)
并添加了与ORDER BY id指令相同的查询:
EXPLAIN SELECT id
FROM log
WHERE log_time < now() - INTERVAL '3 month'
ORDER …Run Code Online (Sandbox Code Playgroud) sql ×3
sql-server ×3
mysql ×2
optimization ×2
performance ×2
postgresql ×2
c# ×1
datetime ×1
distinct ×1
doctrine ×1
indexing ×1
oracle ×1
plsql ×1
symfony1 ×1
t-sql ×1
winforms ×1