这是一个很好的问题,如果相当宽泛(并且没有更糟糕的那个).
如果我了解你,那么你问的是如何从头开始攻击优化问题.
要问的第一个问题是:" 是否存在性能问题? "
如果没有问题,那么就完成了.通常就是这种情况.尼斯.
另一方面...
记录将为您提供频繁的查询.
如果您正在使用某种数据访问层,那么添加代码来记录所有查询可能很简单.
记录执行查询的时间以及每个查询所花费的时间也是一个好主意.这可以让您了解问题所在.
另外,询问用户哪些位烦恼他们.如果缓慢的响应不会惹恼用户,那么无关紧要.
(我可能误解了问题的这一部分)你正在寻找查询/响应时间中的任何模式.
这些通常是对大型表或查询的查询,这些查询在单个查询中连接多个表....但是如果您记录响应时间,则可以遵循这些指导.
您特别询问优化表格.
以下是您可以寻找的一些内容:
非规范化.这会将几个表组合成一个更宽的表,因此您可以只读取一个表来代替将多个表连接在一起的查询.这是一种非常常见且功能强大的技术.NB.我建议保留原始的规范化表格并另外构建非规范化表格 - 这样,你就不会扔掉任何东西.如何让它保持最新是另一个问题.您可以在基础表上使用触发器,或定期运行刷新过程.
规范化.这通常不被认为是一个优化过程,但它有两种情况:
更新.规范化使更新速度更快,因为每次更新都是最小的(您正在更新最小的 - 在列和行方面 - 可能的表.这几乎是规范化的定义.
查询非规范化表以获取存在于更小(更少行)表上的信息可能导致问题.在这种情况下,存储规范化表以及非规范化表(见上文).
水平分区.这意味着通过在另一个相同的表中放置一些行来使表更小.一个常见的情况是让所有表这个月的行ThisMonthSales,并在表中的所有旧的行OldSales,其中两个表具有相同的架构.如果大多数查询都是针对最近的数据,则此策略可能意味着99%的查询仅查看1%的数据 - 这是一次巨大的性能提升.
垂直分区.这是从表中删除字段并将它们放入新表中,该表通过主键连接回主表.这对于非常宽的表(例如,具有数十个字段)非常有用,并且如果表稀疏地填充,则可能有用.
Indeces.我不确定你的问题是否涵盖了这些问题,但关于使用indeces还有很多其他答案.查找索引案例的好方法是:查找慢查询.查看查询计划并查找表扫描.该表上的索引字段,以便删除表扫描.如果需要,我可以写更多内容 - 发表评论.
您可能也喜欢我的帖子.
这是一个很好的问题,如果相当宽泛(并且没有更糟糕的那个).
如果我了解你,那么你问的是如何从头开始攻击优化问题.
要问的第一个问题是:" 是否存在性能问题? "
如果没有问题,那么就完成了.通常就是这种情况.尼斯.
另一方面...
记录将为您提供频繁的查询.
如果您正在使用某种数据访问层,那么添加代码来记录所有查询可能很简单.
记录执行查询的时间以及每个查询所花费的时间也是一个好主意.这可以让您了解问题所在.
另外,询问用户哪些位烦恼他们.如果缓慢的响应不会惹恼用户,那么无关紧要.
(我可能误解了问题的这一部分)你正在寻找查询/响应时间中的任何模式.
这些通常是对大型表或查询的查询,这些查询在单个查询中连接多个表....但是如果您记录响应时间,则可以遵循这些指导.
您特别询问优化表格.
以下是您可以寻找的一些内容:
非规范化.这会将几个表组合成一个更宽的表,因此您可以只读取一个表来代替将多个表连接在一起的查询.这是一种非常常见且功能强大的技术.NB.我建议保留原始的规范化表格并另外构建非规范化表格 - 这样,你就不会扔掉任何东西.如何让它保持最新是另一个问题.您可以在基础表上使用触发器,或定期运行刷新过程.
规范化.这通常不被认为是一个优化过程,但它有两种情况:
更新.规范化使更新速度更快,因为每次更新都是最小的(您正在更新最小的 - 在列和行方面 - 可能的表.这几乎是规范化的定义.
查询非规范化表以获取存在于更小(更少行)表上的信息可能导致问题.在这种情况下,存储规范化表以及非规范化表(见上文).
水平分区.这意味着通过在另一个相同的表中放置一些行来使表更小.一个常见的情况是让所有表这个月的行ThisMonthSales,并在表中的所有旧的行OldSales,其中两个表具有相同的架构.如果大多数查询都是针对最近的数据,则此策略可能意味着99%的查询仅查看1%的数据 - 这是一次巨大的性能提升.
垂直分区.这是从表中删除字段并将它们放入新表中,该表通过主键连接回主表.这对于非常宽的表(例如,具有数十个字段)非常有用,并且如果表稀疏地填充,则可能有用.
Indeces.我不确定你的问题是否涵盖了这些问题,但关于使用indeces还有很多其他答案.查找索引案例的好方法是:查找慢查询.查看查询计划并查找表扫描.该表上的索引字段,以便删除表扫描.如果需要,我可以写更多内容 - 发表评论.
您可能也喜欢我的帖子.