数据库Sql查询

时间:2017-04-16 09:30:43

标签: sql oracle

我想从表(雇用)提取人的记录,然后写查询

SELECT *
FROM employ 
WHERE employ_Id=some_specific_id

现在我的问题是这个查询首先执行的操作,意味着这将首先转到表(雇用)并选择所有记录然后对其应用过滤器或者只是去表(雇用)并找到雇用的记录WHERE子句后给出的特定id。

3 个答案:

答案 0 :(得分:0)

1)表记录大多按主键顺序存储(称为聚簇索引)。因此,当您使用主键作为where条件时,rdbms不需要扫描表(所有记录)

2)对于其他主键。 Rdbms检查是否在表上创建索引,以及是否可以用于where条件。所以,它可以避免全表扫描。

3)如果不能满足上述条件,则执行全表扫描。

答案 1 :(得分:0)

执行查询时,它将查看ALL ROWS以查看它们是否符合您的条件。这就是为什么您拥有的数据越多,查询所需的时间就越长。

如果您的条件是索引,我相信您的查询就是这种情况,假设empId是该表的主键,则搜索将仅在该排序索引上,这将非常快,因为并非所有行需要检查。

答案 2 :(得分:0)

1→首先,控件将检查user_tab数据字典中的表。

2->然后,如果该列存在对where条件的检查,则将检查表中的列可用性。

3→条件可能或可能不是,控件将转到选择列