我有一个问题涉及到一个很大的MySQL数据库的一般方法。我做了一些php代码来与数据库交互。我试图分析一组庞大的数据(~13万行,200列),并且一直在用不同的方法来做这件事。我一直在学习很多东西,而且我觉得我很快就能将它设置为真的,但我仍然有点卡住。处理大型MySQL数据库组织的最佳方式?
我从坚定的'excel'思维开始。我不断地向数据集中添加越来越多的列,因为我试图为了统计分析的目的而选择各种各样的数据。我所做的一些php/mysql脚本花费了数小时。
然后,至少基本工作,我了解到了连接。这是我猜想的一点启示,但也导致我重写所有内容,以便加入我的数据。最终的结果是性能大幅增加 - 现在需要几个小时才花了大约15秒。
与几个人聊天后,我得出的结论,我仍然可以使其更快。我建立的方式是,不同的数据样本都包含在不同的表中。每个表格都有一个数据汇总在另一个表格中,该表格用作联接的一部分 - 有关该特定数据集的一般信息存储在该辅助表格中,以便于访问并提高速度。现在
,我这里的问题是这样的:这将是我最好的方式来改变我的数据库和应用工作,使数据的所有这些不同的样本组合成一个单一的,大表?我一直在尝试这一点,但它似乎并没有比我现在使用的方法更快。
换句话说,现在我正在执行涉及多表连接的大量“小”查询,而不是涉及多表连接的单个巨大查询,是否更好?我一直在检查查询的执行时间,看起来连接正在导致这种新方法的放缓。
我的印象是,从PHP重复发送小型查询到MySQL并不像发送单个查询那么优化,但是对于更复杂的查询,如果不是这种情况,是否有一个转折点?我是否已经达到了这一点?
那么它取决于你使用的存储引擎以及你如何索引表。等式有两个方面:1.您使用的实际模式和2.您发布的每个查询。两者都可以优化。 – prodigitalson 2011-02-23 23:37:45
好吧,这是很好的知道。这些不同的数据样本的主要问题是,没有简单的方法来标准化它们,因为它们中的每一行都是完全独特的。目前,它们使用唯一的行ID(主键)和一组3-4个索引列进行索引,这些索引列定期用作SELECT查询的一部分。但是,即使目前的更新似乎也需要很长时间 - 对于更大的表,使用SELECT INTO来提高速度会更好吗? – vize 2011-02-23 23:53:32