哪个表结构在2以下更好?查询性能:单列vs多列
OR
在第一个查询我使用LIKE
运营商查询。 在第二我使用AND
运营商。
第一个表格设计在选择数据方面比第二个表格有什么优势? 我需要在第一个表格结构和第二个表格结构之间做出什么决定?
哪个表结构在2以下更好?查询性能:单列vs多列
OR
在第一个查询我使用LIKE
运营商查询。 在第二我使用AND
运营商。
第一个表格设计在选择数据方面比第二个表格有什么优势? 我需要在第一个表格结构和第二个表格结构之间做出什么决定?
如果您不需要以任何方式使用Type
或Currency
属性并且您始终只使用存储为MEASUREMENT_NAME
的全部文本,则第一种方法会更好。
如果您打算分别使用Type
或Currency
属性的值,比如在条件等方面使用它们的值,那么第二个选项将是更好的选择。
还可以最终创建一个包含整个文本MEASUREMENT_NAME
和分隔值Type
Currency
&用于滤波目的的组合结构。这会在磁盘上占用更多空间并且不会进行优化,但是整个文本或MEASUREMENT_NAME
未来也可能最终包含现在未知的属性。这可能是以原始格式存储MEASUREMENT_NAME
的原因。
如果属性MEASUREMENT_NAME
不是您从外部获取的东西,而是您自己创建的数据结构,并且您寻求一种如何以灵活(更改)结构存储记录的方式,则最好将其存储为JSON或XML数据,Oracle有built in functions for JSON data。
我还建议使用Type
或Currency
值的链接表,以便主表只包含ID链接作为外键。
第二张表明显优于第一张。如果您必须从第一个表格查询类型或货币,则可能必须使用右侧,左侧或任何其他功能。 另外,如果您对齐第二个表格的键/约束,请遵循第二个标准格式。
第一个表格包含原始未格式化的非标准化数据。查询费用高昂,维护成本高。我给了第二张桌子两个大拇指。 –
第二种结构方式更好 也许以后您需要过滤类型或货币 –
select * from table 1其中,measurement_name如'%Type = ODO Currency = EUR%';或者从table2中选择*,其中type ='ODO'和Currency ='EUR';哪些工作更快? – karz