SQL Server:用于选择列的索引列,其中column1如str1或column2如str2

时间:2018-10-28 23:46:05

标签: sql-server sql-server-2017

我有一张这样的桌子:

CREATE TABLE [dbo].[MoneyTrans]
(
    [Trans_id] [nvarchar](25) NULL,
    [Amount] [nvarchar](25) NULL,
    [Currency] [nvarchar](11) NULL,
    [ExchangeRate] [nvarchar](25) NULL,
    [CorrAmount] [nvarchar](25) NULL,
    [senderName] [nvarchar](255) NULL,
    [SenderPhone] [nvarchar](20) NULL,
    [RecipientName] [nvarchar](255) NULL,
    [RecipientPhone] [nvarchar](20) NULL,
    [SenderPr] [nvarchar](5) NULL,
    [RecipientPr] [nvarchar](5) NULL,
    [Trans_Status] [nvarchar](25) NULL,
    [SendDate] [nvarchar](12) NULL,
    [Receivdate] [nvarchar](12) NULL,
    [Trans_type] [nvarchar](25) NULL
) ON [PRIMARY]

所有查询看起来都是

SELECT * 
FROM MoneyTrans  
WHERE [senderName] = 'some one' OR [RecipientName] = 'some one'

SELECT * 
FROM MoneyTrans 
WHERE [SenderPhone] = '123456' OR [RecipientPhone] = '123456'

最佳的索引编制策略是什么?

像这样使用覆盖索引吗?

CREATE NONCLUSTERED INDEX [ix_MoneyTrans_NamPhon] 
ON [dbo].[MoneyTrans] ([senderName] ASC, [RecipientName] ASC) 
INCLUDE ([Trans_id], [Amount], [Currency], [ExchangeRate], [CorrAmount],
         [SenderPhone], [RecipientPhone], [SenderPr], [RecipientPr],
         [Trans_Status], [SendDate], [Receivdate], [Trans_type]) 

还是只使用常规的非聚集索引?

希望您能帮助我,非常感谢。

0 个答案:

没有答案