2016-04-18 20 views
0

我需要建议如何在查询大尺寸表时获得最快的结果。 我正在使用SQL Server 2012,我的条件是这样的:查询大尺寸表最快的执行时间

我有5个表包含事务记录,每个表有35万条记录。 所有表格有14列,我需要搜索的列是GroupName,CustomerName和NoRegistration。我有一个包含所有这些表格中的5个的视图。 GroupName,CustomerName和NoRegistration记录不是唯一的每个表。

我的应用程序有搜索这些列的功能。 查询是这样的:

由组名称搜索:

SELECT DISTINCT(CustomerName) AS 'CustomerName' FROM TransactionRecords_view WHERE CustomerName LIKE ''[email protected]+'%' 

通过NoRegistration搜索:

SELECT DISTINCT(GroupName) FROM TransactionRecords_view WHERE GroupName LIKE ''[email protected]+'%' 

按名称搜索

SELECT DISTINCT(NoRegistration) FROM TransactionRecords_view WHERE LOWER(NoRegistration) LIKE LOWER(@NoRegistration)+'%' 

我的问题是如何能我实现搜索最快的执行时间? 现在我的条件,每次搜索,花了3至5分钟。

我的想法是让所有5个表中包含不同的GroupName,CustomerName和NoRegistration。

我的想法是让执行时间更快吗?或任何其他想法?

谢谢


编辑:

这是视图查询 “TransactionRecords_view”

CREATE VIEW TransactionRecords_view 
AS 
SELECT * FROM TransactionRecords_1507 
UNION ALL 
SELECT * FROM TransactionRecords_1506 
UNION ALL 
SELECT * FROM TransactionRecords_1505 
UNION ALL 
SELECT * FROM TransactionRecords_1504 
UNION ALL 
SELECT * FROM TransactionRecords_1503 
+0

所以列是键入字符串?您可以使用GroupName'NewGroup'输入新的交易,如果您恰好在几年前使用过一次,那么新交易恰巧在同一组中?但是,如果有像'NewGrooup'这样的错字,那么巧合的是它自己是一个组?我宁愿期望一个GroupName表与交易引用其记录。 –

+0

'SELECT * ... UNION ALL'?所以你的五张桌子都是平等的结构?那么为什么你有五张桌子,而不是一张?那会好得多吗? –

+0

@ThorstenKettner因为它是每个月的交易记录。我的应用程序中的另一个功能是计算每月,上个月和去年的交易,所以我认为将它分成每个月会给出更好的性能 – user1008497

回答

1

好的,所以你不需要制作这些新表格。如果您基于这些字段创建非聚集索引,它将(实际上)执行您的操作。索引只会将数据存储在您指示的列上,而不是整个表格中。但请注意,索引对于SELECT语句非常有用,但会对任何写入语句(INSERT,UPDATE等)产生负面影响。

接下来,您想要在启动实际执行计划的情况下运行查询。这将向您展示优化器如何决定运行每个查询(在后端)。这里有没有什么特别的问题,是否有任何步骤占用了整个运营商的成本?关于YouTube上的执行计划有很多很棒的教学视频,如果你之前没有看过exe计划,请检查一下。

+1

感谢您的意见。我使用Actual Execution Time运行查询,并且缺少2个索引。 – user1008497

3

,您必须出示TransactionRecords_view的SQL。你有索引吗? NoRegistration专栏的排序规则是什么?粘贴每个查询的实际执行计划。

+1

是一个答案**或**评论**。 –

+0

我已经为每个表编制了索引,但它仅适用于我的应用中另一个更重要的功能。忘记索引这个功能。使用实际执行计划并缺少2个索引。谢谢 – user1008497

+0

@NeerajPrasadSharma这是一个评论与答案自我考虑:) –

0

您是否尝试过检查实际执行计划是否缺少索引?

此外,当你在varchar上使用子句时,我听说过关于全文搜索..也许它可以帮你:

https://msdn.microsoft.com/en-us/library/ms142571(v=sql.120).aspx

+0

全文搜索看起来不错,但要使用我需要创建全文索引和全文索引需要主唯一键,并且表没有唯一键。谢谢 – user1008497