首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysql解释中,更高的行数意味着好还是坏?

在mysql解释中,更高的行数意味着好还是坏?
EN

Stack Overflow用户
提问于 2015-10-07 08:08:19
回答 2查看 2.5K关注 0票数 2

我有一个旧的MyISAM表,当我提交一些计数查询时,表会被锁定。如果我在同一个InnoDB表上执行相同的查询,查询就会快速执行。问题是,旧的MyISAM表仍然在生产中使用,而且负载很重,而新的表则没有。

现在我们来谈谈我的问题和问题。当我在两个表中解释查询的执行时,我得到了一些令我困惑的结果。

下面是我在两个表中执行的查询:

代码语言:javascript
复制
SELECT COUNT(*)
FROM table
WHERE vrsta_dokumenta = 3
    AND dostupnost = 0

下面是旧MyISAM表中的解释:

代码语言:javascript
复制
id select_type table     type possible_keys         key               key_len ref    rows   Extra    
1  SIMPLE     old_table  ref idx_vrsta_dokumenta idx_vrsta_dokumenta     1   const 564253  Using where 

下面是来自新的InnoDB表的解释:

代码语言:javascript
复制
id select_type   table  type    possible_keys         key           key_len  ref    rows   Extra     
1  SIMPLE      new_table ref idx_vrsta_dokumenta idx_vrsta_dokumenta   1    const 611905 Using where

如您所见,新表中的行数高于旧表中的行数。

因此,在数字较高是不好的情况下,这是否意味着新表上的查询在充分使用后会更慢?

如果更高的数字是好的,那么也许这就是为什么新表速度更快的原因,并且MyISAM在执行一段时间后会被锁定。

总之,什么是正确的?这行数是什么意思?

编辑:旧表的列比新表多两倍。因为旧的is已经被分成了两个表。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-07 08:49:01

black-room-boy:

因此,在数字较高是不好的情况下,这是否意味着新表上的查询在充分使用后会更慢?

MySQL手册表示“解释”中的行列:

rows列指示MySQL认为必须检查以执行查询的行数。 对于InnoDB表,这个数字是一个估计,可能并不总是精确的。

因此,较高的数字并不坏,它只是基于表元数据的猜测。

black-room-boy:

如果更高的数字是好的,那么也许这就是为什么新表速度更快的原因,并且MyISAM在执行一段时间后会被锁定。

数字高一点不好。MyISAM被锁定不是因为这个号码。

手册

MySQL对MyISAM使用表级锁定,一次只允许一个会话更新这些表,这使得它们更适合于只读、大多数读或单用户应用程序。 ..。表更新比表检索具有更高的优先级.如果一个表有许多更新,请选择语句等待,直到没有更新为止。

如果您的表经常更新,则通过INSERT、UPDATE和DELETE (a.k.a )锁定表。语句,这将阻止您的选择查询。

票数 2
EN

Stack Overflow用户

发布于 2015-10-07 08:47:33

行计数告诉您,为了获得查询的结果,MySQL必须检查多少行。这是索引有帮助的地方,一个名为索引基数( index cardinality )的数字在其中扮演着非常重要的角色。索引有助于MySQL减少对行的检查,因此它所做的越少,速度就越快。由于有许多行满足您的vrsta_dokumenta = 3 AND dostupnost = 0条件,所以MySQL只需遍历这些行,找到它们并增加计数器。对于MyISAM来说,这意味着MySQL必须从磁盘读取数据--这很昂贵,因为磁盘访问非常慢。对于InnoDB来说,它非常快,因为InnoDB可以将其工作数据集存储在内存中。换句话说,MyISAM从磁盘读取,而InnoDB将从内存读取。还有其他可用的优化,但一般规则是,即使在表增长的情况下,InnoDB也会比MyISAM更快。

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

https://stackoverflow.com/questions/32986965

复制
相关文章

相似问题

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