2017-06-14 86 views
4

哪个表结构在2以下更好?查询性能:单列vs多列

enter image description here

OR

enter image description here

在第一个查询

我使用LIKE运营商查询。 在第二我使用AND运营商。

第一个表格设计在选择数据方面比第二个表格有什么优势? 我需要在第一个表格结构和第二个表格结构之间做出什么决定?

+7

第一个表格包含原始未格式化的非标准化数据。查询费用高昂,维护成本高。我给了第二张桌子两个大拇指。 –

+1

第二种结构方式更好 也许以后您需要过滤类型或货币 –

+0

select * from table 1其中,measurement_name如'%Type = ODO Currency = EUR%';或者从table2中选择*,其中type ='ODO'和Currency ='EUR';哪些工作更快? – karz

回答

1

如果您不需要以任何方式使用TypeCurrency属性并且您始终只使用存储为MEASUREMENT_NAME的全部文本,则第一种方法会更好。

如果您打算分别使用TypeCurrency属性的值,比如在条件等方面使用它们的值,那么第二个选项将是更好的选择。

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

如果属性MEASUREMENT_NAME不是您从外部获取的东西,而是您自己创建的数据结构,并且您寻求一种如何以灵活(更改)结构存储记录的方式,则最好将其存储为JSON或XML数据,Oracle有built in functions for JSON data

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

1

第二张表明显优于第一张。如果您必须从第一个表格查询类型或货币,则可能必须使用右侧,左侧或任何其他功能。 另外,如果您对齐第二个表格的键/约束,请遵循第二个标准格式。