在MySQL上使用非常大的表时,“显示索引”速度慢/有问题吗
我们在Debian上使用MySQL 5.0.51。我有一个大型数据库,一个表上有8000多万行,另一个表上有3000多万行,另一个表上有2000万行,等等,每个表都有一个整数主键,而且大多数表都相当宽,服务器工作也相当努力 我们正在使用的RubyonRails框架已经出现了问题,我正在尝试看看它是否只影响了我们,或者它是否是它所做的查询类型中固有的 在启动一个新的Rails进程时,框架从foo运行SHOW INDEX,其中Key_name='PRIMARY'用于InnoDB中的每个表。在我们的服务器上,并且取决于加载/其他查询,对于较大的表,这需要5到15秒的时间。这加起来需要很多秒在MySQL上使用非常大的表时,“显示索引”速度慢/有问题吗,mysql,ruby-on-rails,ruby-on-rails-3,performance,indexing,Mysql,Ruby On Rails,Ruby On Rails 3,Performance,Indexing,我们在Debian上使用MySQL 5.0.51。我有一个大型数据库,一个表上有8000多万行,另一个表上有3000多万行,另一个表上有2000万行,等等,每个表都有一个整数主键,而且大多数表都相当宽,服务器工作也相当努力 我们正在使用的RubyonRails框架已经出现了问题,我正在尝试看看它是否只影响了我们,或者它是否是它所做的查询类型中固有的 在启动一个新的Rails进程时,框架从foo运行SHOW INDEX,其中Key_name='PRIMARY'用于InnoDB中的每个表。在我们的服
这是预期的行为,还是仅在某些有限的情况下才会发生,是否有任何解决方案可以使用SHOW CREATE TABLE foo获得相同的信息 不,不应该太慢。我刚刚在一个大约有4000万行的表上尝试过,它只需要不到0.1秒的时间 应仅显示统计表中已有的信息。
我能想到的唯一一件事是,如果表和mysql内部调用没有统计数据,但我希望没有,那将非常糟糕。Rails 3.1也有同样的问题。问题是,如果后面的表没有主键,则对ActiveRecord操作调用SHOW索引的次数太多。您说过您有表的主键,但是是否有一些属性是ActiveRecord不理解的 我请求解决我们没有主键的问题,所以也许你可以从那里找到答案 您是否可以尝试运行SELECT*FROM INFORMATION_SCHEMA.STATISTICS,其中table_SCHEMA='your_db_name'和table_name='your_table_name'?