如果我有这样的查询:
Select EmployeeId
From Employee
Where EmployeeTypeId IN (1,2,3)
并且我在该EmployeeTypeId
字段上有一个索引,SQL Server仍然使用该索引吗?
是啊,没错。如果您的Employee
表有10,000条记录,而EmployeeTypeId
(1,2,3)中只有5条记录,那么它很可能会使用索引来获取记录。但是,如果发现9,000条记录具有EmployeeTypeId
in(1,2,3),则它很可能只是执行表扫描以获取对应的EmployeeId
s,因为仅遍历整个表比遍历每个表更快索引树的分支,并分别查看记录。
SQL Server做了大量工作来尝试优化查询的运行方式。但是,有时无法得到正确的答案。如果您知道SQL
Server未使用索引,则可以通过查询查询分析器中的执行计划,告诉查询引擎使用特定的索引,并对查询进行以下更改。
SELECT EmployeeId FROM Employee WITH (Index(Index_EmployeeTypeId )) WHERE EmployeeTypeId IN (1,2,3)
假设您在该EmployeeTypeId
字段上拥有的索引名为Index_EmployeeTypeId
。
问题内容: 在SQL Server中,这会将来自Customers表的100条记录插入到tmpFerdeen中: 是否可以跨UNION ALL SELECT进行SELECT INTO:- 不太确定在哪里添加INTO子句。 问题答案: 这在SQL Server中有效:
问题内容: 当然,有一种框架方法可以给定整数,字符串等数组,将它们转换为可在SQL“ ”子句中使用的列表? 例如 会去 问题答案: var inClause = “(“ + String.Join(“,”, values.Select(x => x.ToString()).ToArray()) + “)”; 注意 :您不再需要在.NET Framework 4中调用。添加了一个新方法。
问题内容: 我可以在oracle数据库中使用公用表表达式进行更新吗? 我在尝试时遇到错误: 问题答案: 由于仅是一个 标量值, 您可以做 在这种情况下,Oracle首先 计算平均值 (例如),然后执行 更新 。
问题内容: 在SQL I中,(不幸的)我经常不得不使用“ ”条件,因为数据库违反了几乎所有的规范化规则。我现在无法更改。但这与问题无关。 此外,我经常使用条件来提高SQL语句的可读性和灵活性。 有没有可能在不编写复杂的子选择的情况下将这两件事结合起来的方法? 我想要一些简单而不是这样的东西: 我在这里使用SQl Server和Oracle,但是我很感兴趣是否可以在任何RDBMS中实现。 问题答案:
问题内容: 因此,请考虑以下表格: 桌子: id(整数,主键) 11 c2 c3 c4 c5 假设我使用的查询在运行时有所不同(例如,一个网站,其中的复选框表示是否要在特定字段上进行搜索),一些可能的实例是: (使用一些值) 问题: 索引的作用是什么?在几个查询中将如何使用它? 在此表上创建最佳索引是什么? 问题答案: MySQL文档做了解释多列索引是如何工作的一个很好的工作在这里。 通常,当索引
问题内容: 是否可以合并并在SQL Server查询中使用? 所以,这个查询 查找以下任何可能的匹配项: 等等… 问题答案: 实际上,IN语句创建了一系列OR语句…因此 是有效的 不幸的是,这就是您必须在LIKE语句中采用的方法