SQL查询优化加快了SELECT DISTINCT

时间:2016-05-05 12:46:15

标签: sql-server

为什么这个查询需要12秒,并且它包含完美的索引。

1 个答案:

答案 0 :(得分:2)

当Where子句包含Like语句(例如你的)时,SQL Server不会(不能)使用索引。必须进行扫描。这是因为您告诉SQL Server您希望vch_EmailAddress在电子邮件地址中的任何位置包含“kala”的所有行。因此,不会使用正常索引。它必须扫描每一行并评估每个电子邮件地址。

如果要将Where子句更改为此类,则会(可能)使用索引。

where ea.vch_EmailAddress Like 'kala%'  OPTION (RECOMPILE)