Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何优化Sybase Sql查询?_Sql_Query Optimization_Sybase - Fatal编程技术网

如何优化Sybase Sql查询?

如何优化Sybase Sql查询?,sql,query-optimization,sybase,Sql,Query Optimization,Sybase,我有一个从Sybase数据库获取数据的SQL查询。在where子句中,我们根据要求(BU In('CMBS','MBS')和RU='GBR')使用文本列。这些条款正在扼杀性能。使用的表具有大量行 有什么改进性能的建议吗 下面是SQL语句- SELECT [COLUMN LIST] from dealer_Key dk, INNER JOIN d_posting dp ON dk.deal_key_id = dp.deal_key_id, INNER JOIN d_p_v dpv ON dp.

我有一个从Sybase数据库获取数据的SQL查询。在where子句中,我们根据要求
(BU In('CMBS','MBS')和RU='GBR')
使用文本列。这些条款正在扼杀性能。使用的表具有大量行

有什么改进性能的建议吗

下面是SQL语句-

SELECT [COLUMN LIST]
from dealer_Key dk, 
INNER JOIN d_posting dp ON dk.deal_key_id = dp.deal_key_id, 
INNER JOIN d_p_v dpv ON dp.posting_id = dpv.posting_id,
INNER JOIN snapInfo s ON dpv.snapshot_start_id = s.snapshot_id, 
INNER JOIN psgl_ratemeter r ON (dp.gl_currency = r.from_currency),
INNER JOIN psgl_ratemeter_value rv (ON r.psgl_rate_id = rv.psgl_rate_id AND rv.refdate = dpv.gl_transaction_effective_date)
where 
r.snapshot_end_id is null
and r.to_currency = 'AUD'
and (dp.snapshot_end_id is null or dp.snapshot_end_id > dpv.snapshot_start_id)
and dpv.gl_transaction_effective_date > '20140930'
and dpv.gl_transaction_effective_date < '20150901'
and gl_business_unit IN ('CTCMB')
and gl_currency='CAD'
and gl_counterparty='IMCLIMTR'
and gl_location='SYD'
and gl_department='LTFSY'
and gl_product='FEES'
选择[列列表]
来自经销商_Key dk,
内部连接d_在dk.deal_key_id=dp.deal_key_id上发布dp,
dp.posting\u id=dpv.posting\u id上的内部联接d\u p\u v dpv,
dpv.snapshot\u start\u id=s.snapshot\u id上的内部联接快照信息s,
内部连接psgl_费率表r开启(dp.gl_货币=r.from_货币),
内部联接psgl\u费率表\u值rv(在r.psgl\u费率id=rv.psgl\u费率id和rv.refdate=dpv.gl\u事务生效日期)
哪里
r、 快照\u结束\u id为空
r.to_货币='澳元'
和(dp.snapshot\u end\u id为空或dp.snapshot\u end\u id>dpv.snapshot\u start\u id)
和dpv.gl交易生效日期>'20140930'
和dpv.gl交易生效日期<'20150901'
以及德国劳埃德船级社业务单位(“CTCMB”)
和gl_currency='CAD'
和德国劳埃德船级社
和gl_location='SYD'
和德国劳埃德船级社部门='LTFSY'
和德国劳埃德船级社产品费用

表格定义和索引信息?此外,整个SELECT也会有很大帮助。该表是以整数列为索引的。它有聚集索引。在my SQL中,我们也基于索引加入,但当我们在文本列上添加where子句时,性能会下降。请学习使用正确的显式
join
语法。至少,它会帮助其他人理解您的查询,并提出改进和加快性能的方法。我已经更新了。分而治之。使用较小的多个查询,而不是一个较大的查询