哪种方法更适合提高存储过程的性能

时间:2015-01-16 11:48:27

标签: mysql performance stored-procedures data-partitioning

我有一个sp,它必须从8个表中选择数据,每个选择查询都有很多' where子句'每个表都有数千行数据。

现在,要求是提高此sp的性能。 建议采用下面提到的方法,我的问题分别在下面提到:

  1. 创建一些其他表格,这些表格将存储经常询问的数据(例如:当前年份),因此请将这些表格用于当前年度数据,这些数据需要50%的时间。并使用原始表除当年以外的年份。由于这会限制数据,因此我们期望性能提升。 所以我的问题是:这会导致性能的显着提高吗?因为无论如何,子句也限制了要选择的数据。或者如何减少提供给sql的数据与性能相关
  2. 根据年份在现有表格上创建分区。 我不知道这些分区是如何工作的。因此,如果有人能够对此有所了解,那将不胜感激。

1 个答案:

答案 0 :(得分:0)

选项1基本上没用,因为您必须编写大量代码来决定使用哪些表。

选项2:PARTITIONing很少能提高您从INDEXes获得的性能。

所以,选项3:让我们看一个典型的查询和SHOW CREATE TABLEs。然后让我们看看我们是否可以优化查询。它可能就像将日期时间放在某些现有索引的末尾一样简单。