假设我有两个这样的表:
Employers (id, name, .... , deptId). Depts(id, deptName, ...).
但是这些数据不会经常被修改,我想要这样的查询
SELECT name, deptName FROM Employers, Depts WHERE deptId = Depts.id AND Employers.id="ID"
尽可能快.
我的脑子里有两种可能的解决方案:
对表进行非规范化:
尽管有了这个解决方案,我将失去一些"标准化数据库的巨大优势,但这里的性能是必须的.
为该非规范化数据创建视图.
我将保持数据规范化(这是我的问题),如果没有该视图,对该视图的查询性能将更快.
或者另一种问同样问题的方法,每次你对它进行查询时,视图都是"解释",或者如何在DBA中使用视图Stuff?
通常,除非您"实现"某个视图(在MS SQL Server等某些软件中是一个选项),否则视图只会转换为对基表的查询,因此不会比原始视图更快或更慢(减去极小的数量)翻译查询所需的时间,与实际执行查询相比没什么用.
你怎么知道你有性能问题?你在负载下分析它吗?您是否验证了性能瓶颈是这两个表?通常,在您获得硬数据之前,不要假设您知道性能问题的来源,并且在您知道正在优化正确的事情之前不要花费任何时间进行优化 - 80%的性能问题来自20代码的百分比.