我有一个巨大的数据库怪物(好的,这不是完全正确的,但在一个产品表中有超过800万条记录)。这张表是由13个供应商提供的。即使有了我能想到的最好的索引,搜索为供应商8准备好的前10,000条记录,也是非常缓慢的。我想要做的是为每个供应商创建一个产品表,并将该表解析为较小的表。
现在,在c++或其他方面,我只需在类内切换我正在处理的表。
在ruby中,我似乎必须为每个表创建一个新类,并进行迁移。此外,由于我计划在会话表#,我会有兴趣让红宝石与他们一起工作。
哦..。在接下来的6个月里将增长到2000万。
提出的一个问题是我的数据库引擎是什么。现在它是sql,但我可以将我的数据库推到另一个引擎,如果这意味着我可以使用临时表和“分区”表。
还有一点要索引..。对频繁更改的字段进行索引是不实际的。比如价格和数量..。我必须重新索引更改的项目,每次我做一个改变。
发布于 2011-12-04 03:45:37
对于Ruby,我假设您的意思是从Rails应用程序中的ActiveRecord::基类继承。按照约定,您是正确的,因为每个类都表示一个单独的表。
您可以使用"ActiveRecord::Base.connection.execute“方法轻松地执行任意SQL,并传递一个字符串,该字符串是您的SQL查询。这将避免创建表示瞬态表的单独Ruby类。这不是"Rails方法“,但是它确实解决了允许在类文件中切换表的问题。
有关ActiveRecord数据库语句的更多信息可以在这里找到:http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html
但是,正如其他人所指出的,您应该能够优化您的查询,这样就不需要对多个表进行拆分。您可能需要使用各种工具来分析SQL查询的执行计划,以优化执行。如果您正在使用MySQL视图,请检查其查询执行计划功能:http://dev.mysql.com/doc/refman/5.5/en/execution-plan-information.html
通过引入索引或更改表之间的联接方法等,您应该能够返回减少查询执行时间。
https://stackoverflow.com/questions/8321662
复制相似问题