如何在SQL查询中使用索引

omk*_*ade 5 sql sql-server indexing stored-procedures sql-server-2008

嗯,我是这个东西的新手..我在开始时在我的SP中创建了一个索引,如下所示

Create Index index_fab
ON TblFab (Fab_name)
Run Code Online (Sandbox Code Playgroud)

现在我有了这个问题

select fab_name from TblFab where artc = 'x' and atelr = 'y'.
Run Code Online (Sandbox Code Playgroud)

现在是否有必要在select子句中使用此索引名称,否则它将自动用于加速查询

我必须使用类似的东西

select fab_name from TblFab WITH(INDEX(index_fab)) where artc = 'x' and atelr = 'y'.
Run Code Online (Sandbox Code Playgroud)

或者在查询中使用此索引的任何其他方法

以及如果我们在这个表上使用join,如何使用索引?

Nev*_*uyt 9

首先,您是说您是在存储过程中创建索引吗?这是一个坏主意 - 如果您运行存储过程两次,它将失败,因为索引已经存在.

其次,您的查询不使用索引中提到的列,因此它不会产生任何影响.

第三,正如JodyT所写,查询分析器(SQL Server本身)将决定使用哪个索引; 它几乎肯定比你更好.

最后,为了加快您提到的查询速度,请在artc和atelr列上创建索引.