select *与select 无索引列以及select 有索引列的比较

--------------------------在数据量少的表中查看执行计划--------------------------

select * 的执行计划

select  无索引列的执行计划

select 有索引列执行计划


查看 执行计划
select *                  cost:3   bytes:785    
select  有索引列   cost:1  bytes:15

select  无索引列   cost:3   bytes:25

---------------------在数据量较大的表中180万 查看执性计划--------------------------------------------------------------------

select * 的执行计划

select 有索引的列的执行计划

select 无索引的列 的执行计划

查看执行计划

select  *                    Bytes: 2232M        Cost  :   101k             Time: 00:20:15

select 有 索引列     Bytes:  15M          Cost  :   2146             Time:   00:00:26

select 无索引列      Bytes:  44M          Cost  :   100k               Time:  00:20:12

-------------------------------------------------------------------------------总结-----------------------------------------------------------------------------------------------------------------

在数据量不大的表中 如果列没有索引 select id  和select * 执行的代价是一样的 但是操作的数据量不同
如果列有索引 那么select id 比select * 以及select  无索引列的执行代价要小很多  操作的数据量也少很多

在数据量较大的表中    select  id 比select * 执行的代价要低  操作的数据量要少 查询的时间要少

如果列有索引 那么select 有索引列 比select *以及select  无索引列 的执行代价要小很多  操作的数据量也少很多  查询的时间要少很多












### 回答1: 在 Oracle 数据库中,使用 SELECT * FROM 语句时是可以接索引的,但是这不是一个好的做法。 通常情况下,建议指定需要查询的,而不是使用通配符 (*) 来查询所有。如果你使用了通配符 (*),数据库引擎将不得不扫描整个表,并返回所有的值,而这可能会导致性能问题。 如果你需要查询的已经在一个索引中,那么在查询时可以使用该索引,以提高查询性能。但是,如果你需要查询的没有在索引中,那么在查询时使用索引可能不会提高性能,因为数据库引擎可能需要访问表的所有行来获取没有在索引中的的值。 因此,建议在查询中只查询需要的,并根据需要创建适当的索引以提高查询性能。 ### 回答2: 在Oracle中,SELECT语句后面可以接索引,但是并不是直接将索引放在SELECT语句中进行使用,而是通过在WHERE子句中指定需要使用的索引来间接使用索引。 例如,如果有一个名为"index_name"的索引,包含在表中的某个上,可以在SELECT查询中指定WHERE子句来使用该索引。示例语句如下: SELECT * FROM table_name WHERE indexed_column = 'value'; 通过在WHERE子句中指定索引的条件,Oracle可以利用该索引来更快地检索满足条件的数据行,从而提高查询的性能。 需要注意的是,在某些情况下,Oracle可能不会选择使用索引,而是选择全表扫描来执行查询。这可能是因为全表扫描会更高效,或者索引的选择性不足以使它成为性能更好的选择。 因此,在使用SELECT语句时,可以尝试在WHERE子句中指定适当的索引条件,以提高查询性能。同时,还需要根据具体情况来评估是否使用索引能够带来更好的效果,以确保查询的高效执行。 ### 回答3: 在Oracle中,`SELECT * FROM`语句是用于查询所有的语句。这个语句后面可以接索引,但是需要注意以下几点。 首先,索引是用来提高查询性能的,对于包含在`SELECT * FROM`中的所有的查询来说,使用索引可能不一定能够提高查询效率。因为索引可以帮助定位到特定的数据行,但是当查询需要返回大量的数据时,使用索引可能会导致额外的I/O操作,从而降低查询速度。所以,在使用`SELECT * FROM`的同时使用索引可能并不总是明智的选择。 其次,如果`SELECT * FROM`语句中只查询了部分,而这些恰好是有索引,那么使用索引是可以提高查询性能的。因为索引可以减少需要读取的数据量,从而加快查询速度。 最后,不同类型的索引在使用上也有些差异。例如,对于B树索引,只需要在查询条件中带上合适的索引就可以生效;而对于位图索引,可能需要使用到完整的索引才能发挥作用。 综上所述,虽然`SELECT * FROM`语句后面可以接索引,但是在使用时需要根据具体的场景和查询需求进行权衡和选择,以充分利用索引提高查询性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tiegenZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值