查询性能:单列与多列

时间:2017-06-14 08:37:50

标签: sql oracle database-design query-optimization

在2以下哪个表结构更好?

enter image description here

OR

enter image description here

在第一个查询中,我在查询中使用LIKE运算符。 在第二个我使用AND运算符。

第一桌设计在选择数据时是否优于第二表? 我需要在第一个表结构和第二个表结构之间决定什么情况?

2 个答案:

答案 0 :(得分:1)

第二张表显然比第一张表有优势。如果您必须从第一个表中查询类型或货币,则可能必须使用右侧,左侧或任何其他功能。 此外,如果您为第二个表格对齐键/约束,请遵循第二范式。

答案 1 :(得分:1)

如果您从未需要以任何方式使用TypeCurrency属性,那么第一个会更好,并且您始终只使用存储为MEASUREMENT_NAME的整个文本。

如果您打算单独使用TypeCurrency属性的值,例如在条件等条件下使用它们的值,则第二个选项将是更好的选择。

您最终还可以创建一个包含整个文本MEASUREMENT_NAME和分隔值Type&的组合结构。 Currency用于过滤目的。这将在磁盘上占用更多空间并且不会进行优化,但是整个文本或MEASUREMENT_NAME将来最终还可能包含您现在不知道的属性。这可能是以原始格式存储MEASUREMENT_NAME的原因。

如果属性MEASUREMENT_NAME不是您从外部来源获得的,但它是您自己制作的数据结构,并且您寻求一种如何存储具有灵活(变化)结构的记录的方法,您最好存储作为JSON或XML数据,Oracle有built in functions for JSON data

我还建议对TypeCurrency值使用链接表,以便主表仅包含ID链接作为外键。