【问题标题】:Looking for data in a table through colums with categories/state values通过具有类别/状态值的列在表中查找数据
【发布时间】:2013-04-19 09:29:29
【问题描述】:

假设我们有一个具有大量读取但也插入但几乎不更新也不删除的水果。

我们有 2 列存储具有少量选项的值。让我们说类别[香蕉、苹果、橙子或梨] 和状态[完成、进行中、变质、损坏或正常]。
最后,我们有一列姓氏为所有者。


注意事项:
我有时会按类别搜索,有时会按状态搜索。
在所有情况下,都将使用姓氏进行搜索。
我将始终对类别/状态执行完全匹配,但以姓氏开头。

常见查询示例:

SELECT * FROM fruit_table WHERE category='BANANA' and last_name LIKE 'Cool%'
SELECT * FROM fruit_table WHERE status='Spoiled'  and last_name LIKE 'Co%'
SELECT * FROM fruit_table WHERE category='BANANA' and last_name LIKE 'smith%'




我该如何准备才能缩短响应时间?
索引会有帮助吗(考虑到列中的值根本不分散)?
位图索引在这里有帮助吗?
分区呢?

最后,关于标题的道歉,我不知道如何正确地表述它。

【问题讨论】:

  • 在操作环境中通常应避免使用位图索引 - 它们最适合数据仓库。

标签: database performance oracle indexing partitioning


【解决方案1】:
  • 位图索引对数量有限的项目有很大帮助 的可用选择。
  • 标准的 b-tree 索引(或 SQL Server 中的非聚集索引)可以正常工作 对于 last_name 列。
    我会先做这两个,因为它们很简单,然后看看事情是如何运作的。

过早优化通常是一种不好的做法。但是,添加索引是提高速度的快速方法,无需付出太多努力。有关 Oracle 中索引的更多信息,请阅读this question

【讨论】:

    猜你喜欢
    • 2020-04-05
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多