Sql 用于检索数据

Sql 用于检索数据,sql,oracle,Sql,Oracle,如果您提供问题的更具体细节,我们可能会提供更具体的指导 希望能有所帮助。视情况而定。您需要了解您的数据、您最感兴趣的数据子集,并确定如何最好地实现物理模型。(堆表、IOT、位图索引、B*树索引、单表哈希集群等) 如果您有查询,例如: select * from some_big_table where col_a = 32457; 比如说,它返回20000000行中的500000行,但运行需要很多分钟,因为列a上没有索引,并且被迫进行完整的表扫描,然后创建一个视图: create view m

如果您提供问题的更具体细节,我们可能会提供更具体的指导


希望能有所帮助。

视情况而定。您需要了解您的数据、您最感兴趣的数据子集,并确定如何最好地实现物理模型。(堆表、IOT、位图索引、B*树索引、单表哈希集群等)

如果您有查询,例如:

select * from some_big_table where col_a = 32457;
比如说,它返回20000000行中的500000行,但运行需要很多分钟,因为列a上没有索引,并且被迫进行完整的表扫描,然后创建一个视图:

create view my_view as select * from some_big_table where col_a = 32457;
然后从视图中选择,仍然会遇到相同的问题

您需要查看物理模型,以及存储和/或索引数据的最有效方式,以优化用于检索数据的访问路径

如果您提供问题的更具体细节,我们可能会提供更具体的指导


希望能有所帮助。

视情况而定。您需要了解您的数据、您最感兴趣的数据子集,并确定如何最好地实现物理模型。(堆表、IOT、位图索引、B*树索引、单表哈希集群等)

如果您有查询,例如:

select * from some_big_table where col_a = 32457;
比如说,它返回20000000行中的500000行,但运行需要很多分钟,因为列a上没有索引,并且被迫进行完整的表扫描,然后创建一个视图:

create view my_view as select * from some_big_table where col_a = 32457;
然后从视图中选择,仍然会遇到相同的问题

您需要查看物理模型,以及存储和/或索引数据的最有效方式,以优化用于检索数据的访问路径

如果您提供问题的更具体细节,我们可能会提供更具体的指导

希望这会有所帮助。

视图不会比底层查询慢(或快)

那么,如果你的观点是

create view v as
    select * from t
     where rownum < 500000;
花费+/-与相同的时间

select * from t
  where rownum < 500000;
从t中选择*
其中rownum<500000;
也许你想看看具体化的视图。根据查询的不同,它们可能会显著加快查询速度(以占用更多磁盘为代价)

根据您的评论编辑(只需要为最近的数据(即最近一周或一个月)生成UI报告。因此,我只需要最新的数据…)我想对您的表进行分区。我可以建议您介绍一下分区表吗?尤其是关于。

的部分,视图不会比底层查询慢(或快)

那么,如果你的观点是

create view v as
    select * from t
     where rownum < 500000;
花费+/-与相同的时间

select * from t
  where rownum < 500000;
从t中选择*
其中rownum<500000;
也许你想看看具体化的视图。根据查询的不同,它们可能会显著加快查询速度(以占用更多磁盘为代价)

根据您的评论编辑(只需要为最近的数据(即最近一周或一个月)生成UI报告。因此,我只需要最新的数据…)我想对您的表进行分区。我可以建议您介绍一下分区表吗?尤其是关于。

的部分,视图不会比底层查询慢(或快)

那么,如果你的观点是

create view v as
    select * from t
     where rownum < 500000;
花费+/-与相同的时间

select * from t
  where rownum < 500000;
从t中选择*
其中rownum<500000;
也许你想看看具体化的视图。根据查询的不同,它们可能会显著加快查询速度(以占用更多磁盘为代价)

根据您的评论编辑(只需要为最近的数据(即最近一周或一个月)生成UI报告。因此,我只需要最新的数据…)我想对您的表进行分区。我可以建议您介绍一下分区表吗?尤其是关于。

的部分,视图不会比底层查询慢(或快)

那么,如果你的观点是

create view v as
    select * from t
     where rownum < 500000;
花费+/-与相同的时间

select * from t
  where rownum < 500000;
从t中选择*
其中rownum<500000;
也许你想看看具体化的视图。根据查询的不同,它们可能会显著加快查询速度(以占用更多磁盘为代价)



根据您的评论编辑(只需要为最近的数据(即最近一周或一个月)生成UI报告。因此,我只需要最新的数据…)我想对您的表进行分区。我可以建议您介绍一下分区表吗?特别是关于。

亲爱的马克,该表已经在搜索列上有了索引。它没有主键和其他约束。亲爱的马克,我的情况也正是你提到的。视图仅依赖于表。它与其他表、函数、视图、过程等无关。亲爱的马克,该表已经在搜索列上有索引。它没有主键和其他约束。亲爱的马克,我的情况也正是你提到的。视图仅依赖于表。它与其他表、函数、视图、过程等无关。亲爱的马克,该表已经在搜索列上有索引。它没有主键和其他约束。亲爱的马克,我的情况也正是你提到的。视图仅依赖于表。它与其他表、函数、视图、过程等无关。亲爱的马克,该表已经在搜索列上有索引。它没有主键和其他约束。亲爱的马克,我的情况也正是你提到的。视图仅依赖于表。它与其他表、函数、视图、过程等无关。查询是否具有聚合函数、联接等?亲爱的Rene,该表没有任何函数或联接。这正是Mark提到的例子……所以,我不明白为什么您只想查询表的一部分。如果你不知道其他数据是什么样子,那么这些数据又有什么用呢?亲爱的Rene,很抱歉延迟了回复。该表包含完整的数据历史记录。需要为上的生成UI报告