Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL上使用非常大的表时,“显示索引”速度慢/有问题吗_Mysql_Ruby On Rails_Ruby On Rails 3_Performance_Indexing - Fatal编程技术网

在MySQL上使用非常大的表时,“显示索引”速度慢/有问题吗

在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中的每个表。在我们的服

我们在Debian上使用MySQL 5.0.51。我有一个大型数据库,一个表上有8000多万行,另一个表上有3000多万行,另一个表上有2000万行,等等,每个表都有一个整数主键,而且大多数表都相当宽,服务器工作也相当努力

我们正在使用的RubyonRails框架已经出现了问题,我正在尝试看看它是否只影响了我们,或者它是否是它所做的查询类型中固有的

在启动一个新的Rails进程时,框架从foo运行SHOW INDEX,其中Key_name='PRIMARY'用于InnoDB中的每个表。在我们的服务器上,并且取决于加载/其他查询,对于较大的表,这需要5到15秒的时间。这加起来需要很多秒


这是预期的行为,还是仅在某些有限的情况下才会发生,是否有任何解决方案可以使用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'?