大きなサイズのテーブルをクエリするための最速の結果を得る方法をアドバイスする必要があります。 私はSQL Server 2012を使用しています。私の条件は次のようなものです。大きなサイズのテーブルでクエリを実行するための最速の実行時間
私は5つのテーブルにトランザクションレコードが含まれており、各テーブルには3500万のレコードがあります。 すべてのテーブルには14の列があり、検索する必要がある列はGroupName、CustomerName、およびNoRegistrationです。私はこれらのテーブルのうち5つを含むビューを持っています。 GroupName、CustomerName、およびNoRegistrationレコードは、各テーブルで一意ではありません。
私のアプリケーションには、これらの列を検索する機能があります。私の質問はどのようにすることができますです
SELECT DISTINCT(NoRegistration) FROM TransactionRecords_view WHERE LOWER(NoRegistration) LIKE LOWER(@NoRegistration)+'%'
:グループ名によって
検索:
SELECT DISTINCT(GroupName) FROM TransactionRecords_view WHERE GroupName LIKE ''[email protected]+'%'
名で検索:
SELECT DISTINCT(CustomerName) AS 'CustomerName' FROM TransactionRecords_view WHERE CustomerName LIKE ''[email protected]+'%'
NoRegistrationで検索 クエリは、このようなものです私は検索のための最も速い実行時間を達成する? 私の状況では、私が検索するたびに、3〜5分かかりました。
私の考えは、新しいテーブルにGroupName、CustomerName、およびNoRegistrationの異なる5つのテーブルすべてが含まれるようにすることです。
私の考えは、実行時間が短縮されることですか?または他のアイデア?あなたがTransactionRecords_viewのSQLを示さなければならない
これは、ビューのクエリである "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'?あなたの5つのテーブルはすべて同じように構造化されていますか?なぜあなたは5つのテーブルを持っていますか?それははるかに良いだろうか? –
@ThorstenKettnerは毎月取引記録であるためです。私のアプリの別の機能は、毎月、先月、昨年のトランザクションを計算するので、毎月分けてパフォーマンスを向上させると思った。 – user1008497