我需要建议如何在查询大尺寸表时获得最快的结果。 我正在使用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
所以列是键入字符串?您可以使用GroupName'NewGroup'输入新的交易,如果您恰好在几年前使用过一次,那么新交易恰巧在同一组中?但是,如果有像'NewGrooup'这样的错字,那么巧合的是它自己是一个组?我宁愿期望一个GroupName表与交易引用其记录。 –
'SELECT * ... UNION ALL'?所以你的五张桌子都是平等的结构?那么为什么你有五张桌子,而不是一张?那会好得多吗? –
@ThorstenKettner因为它是每个月的交易记录。我的应用程序中的另一个功能是计算每月,上个月和去年的交易,所以我认为将它分成每个月会给出更好的性能 – user1008497