mysql - 观察到 MySQL 出现一些奇怪的情况...查询突然变得 super 快

标签 mysql

我的表中有一个列“name”,并且至少有 1000 万条记录。我已在此名称列上添加了索引。现在,对于最初的几次搜索,需要 10 多秒才能返回一个答案(无论名称是否存在),但突然间,它在不到 0.1 秒的时间内就给出了结果。我错过了什么吗?我知道 MySQL 维护着最近查询的缓存,但我正在尝试的查询非常随机......关于为什么会发生这种情况有什么想法吗?

最佳答案

您的查询只是在预热索引缓存。这与查询缓存无关。 InnoDB 索引特别需要一些点击来预热,因为它们的索引基数值不存储在表文件中。初始查询将使用它们遇到的索引数据填充 InnoDB 缓冲池,索引数据由 my.cnf 中 innodb_buffer_pool_size 指定的值定义。尽管对 MyISAM 表不太重要,但 key_buffer_size 的值可以类似地进行调整。

MySQL 的 InnoDB 性能调优章节提供了一个很好的切入点来了解正在发生的情况: http://dev.mysql.com/doc/refman/5.0/en/innodb-tuning.html

关于mysql - 观察到 MySQL 出现一些奇怪的情况...查询突然变得 super 快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1870956/

相关文章:

mysql - 将 MySQL 日期时间字段格式化为 "hh:mm"

mysql - 如何使用 Sequelize 从不同的表中插入/查找由外键相关的行?

php - Codeigniter 隐藏窗体变为 NULL

php - "join"函数上的 MySQL 数学

mysql - 如何根据列中的子字符串进行聚合?

mysql - MySql 中的 LIMIT 子句似乎不适用于 IN() 子查询

php - 简单的mysql select错误限制

python - MySQLdb 查询 Numpy 数组

php - Symfony 多对多连接

mysql - SQL 仅选择列上具有最大值的行