关于oracle 11g问题的索引
我有一个包含 900,000 条记录的表 (MEN)。
在此表中,我有字段 IP
和 Tdate
。
当我运行查询时:
select * from MEN where IP = '1.1.1.1' and Tdate = TO_DATE('07/04/2010', 'DD/MM/YYYY')
需要很长时间才能得到结果。
我尝试像这样创建索引:
create index
my_in
on
MEN (IP,Tdate );
但是如何运行查询以获得快速结果?
我尝试这个:
select My_in from MEN where IP = '1.1.1.1' and Tdate = TO_DATE('07/04/2010', 'DD/MM/YYYY')
并收到错误:ORA-00904
i have table (MEN) with 900,000 records.
in this table i have field IP
and Tdate
.
when i run query:
select * from MEN where IP = '1.1.1.1' and Tdate = TO_DATE('07/04/2010', 'DD/MM/YYYY')
it takes long time until i get Result.
i try to make index like this:
create index
my_in
on
MEN (IP,Tdate );
but how to run the query to get fast Result?
i try this:
select My_in from MEN where IP = '1.1.1.1' and Tdate = TO_DATE('07/04/2010', 'DD/MM/YYYY')
and get error: ORA-00904
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您不在选择中使用索引名称 (My_in)。数据库本身会决定使用索引。因此,您应该执行与第一个示例中相同的选择。
You do not use the index name (My_in) in the select. The database itself will figure out to use the index. So you should just do the same select as in your first example.
在您的查询中,
my_in 是索引名称。如果你想强制使用索引,那么你可以提示你的查询
in your query
the my_in is the index name. If you want to force the index usage, then you can hint your query
这不是有效的 SQL。
My_in
是您的索引的名称。重试:
或者,如果您想知道服务器是否将使用使用您新创建的索引的计划,您可以检查
explain
命令的输出:查看 Oracle 关于 解释计划。它将帮助您进行此优化以及许多其他 SQL 优化。
That's not valid SQL.
My_in
is the name of your index.Try again with:
Alternatively, if you want to know if the server will use a plan using your newly created index, you can inspect the output of the
explain
command:Take a look at Oracle's documentation on EXPLAIN PLAN. It will help you with this and many other SQL optimizations.