首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态绑定到表上的Ruby

动态绑定到表上的Ruby
EN

Stack Overflow用户
提问于 2011-11-30 05:46:11
回答 1查看 228关注 0票数 0

我有一个巨大的数据库怪物(好的,这不是完全正确的,但在一个产品表中有超过800万条记录)。这张表是由13个供应商提供的。即使有了我能想到的最好的索引,搜索为供应商8准备好的前10,000条记录,也是非常缓慢的。我想要做的是为每个供应商创建一个产品表,并将该表解析为较小的表。

现在,在c++或其他方面,我只需在类内切换我正在处理的表。

在ruby中,我似乎必须为每个表创建一个新类,并进行迁移。此外,由于我计划在会话表#,我会有兴趣让红宝石与他们一起工作。

哦..。在接下来的6个月里将增长到2000万。

提出的一个问题是我的数据库引擎是什么。现在它是sql,但我可以将我的数据库推到另一个引擎,如果这意味着我可以使用临时表和“分区”表。

还有一点要索引..。对频繁更改的字段进行索引是不实际的。比如价格和数量..。我必须重新索引更改的项目,每次我做一个改变。

EN

回答 1

Stack Overflow用户

发布于 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

通过引入索引或更改表之间的联接方法等,您应该能够返回减少查询执行时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8321662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档