sql - 在Oracle SQL中,我可以查询表的一个分区而不是整个表以使其运行得更快吗?

标签 sql oracle select syntax partitioning

我想查询一个包含 100 万条记录的表,其中包含名为“FooBar”的客户,这些客户的记录日期为 2016 年 7 月 24 日。该表包含 10 天的数据。

select * 
from table
where customer = 'FooBar'
and insert_date between to_date('2016-07-24 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and to_date('2016-07-24 23:59:59', 'YYYY-MM-DD HH24:MI:SS');

上述查询的问题是运行需要一段时间。我希望它运行得更快。

该表分为 24 小时天。我可以将查询集中在表分区上吗?这会让查询运行得更快吗?

select *
from partition-7-24-2016
where customer = 'FooBar'; 

最佳答案

正确的语法是从[表]分区([分区])中选择[列]。因此,在这个用例中,您将拥有如下内容:

SELECT *
FROM   mytable PARTITION (partition_7_24_2016)
WHERE  customer = 'FooBar'; 

关于sql - 在Oracle SQL中,我可以查询表的一个分区而不是整个表以使其运行得更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38578004/

相关文章:

sql - 全文索引需要删除和重新创建 - 为什么?

database - 如何将 Airflow 连接到 oracle 数据库

sql - SQL 查询帮助 - 使用 INTERBASE 的子查询

select - DB2:通过干扰 Select 子句中的子查询进行分组

sql - 如何选择状态只在一个集合中的记录?

Javascript SQL 请求 Bad Field Error in where 子句

asp.net - 如何在sql语句中使用传递给asp.net webservice的参数?

sql - 如何在 WHERE 和 HAVING 中查询同一列

sql - 元组约束

asp.net - 在非关系数据库中创建 View