【问题标题】:Mysql innodb: Choosing index type for 'greater than >=' selectMysql innodb:为“大于> =”选择索引类型
【发布时间】:2011-06-06 16:07:15
【问题描述】:

我正在优化更新查询:

UPDATE projects SET rgt = rgt + 2 WHERE rgt >= @superRgt;

该表有很多行(~63000),查询运行缓慢。当我

explain SELECT * FROM projects WHERE rgt >= @superRgt;

我得到这个结果:

+----+-------------+----------+------+---------------+------+---------+------+-------+-------------+
| id | select_type | table    | type | possible_keys | key  | key_len | ref  | rows  | Extra       |
+----+-------------+----------+------+---------------+------+---------+------+-------+-------------+
|  1 | SIMPLE      | projects | ALL  | rgt           | NULL | NULL    | NULL | 69971 | Using where |
+----+-------------+----------+------+---------------+------+---------+------+-------+-------------+

rgt键定义为:

+----------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table    | Non_unique | Key_name   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+----------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| projects |          1 | rgt        |            1 | rgt         | A         |       72770 |     NULL | NULL   |      | BTREE      |         |
+----------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+

我想知道是否可以通过选择可与WHERE rgt >= @superRgt 一起使用的索引类型来优化 UPDATE 查询?

【问题讨论】:

标签: mysql optimization indexing innodb


【解决方案1】:

UPDATE projects SET rgt = rgt + 2 WHERE rgt >= @superRgt 影响了多少行?

如果它影响很多行,MySQL 将忽略定义的索引。这些链接可能是相关的:

MySQL is not using an index

MySQL datetime index is not working

【讨论】:

    【解决方案2】:

    我认为加快速度的唯一方法是检查您的 innodb 缓冲区大小。磁盘和内存缓存。

    一个小的值可能会导致innodb频繁去磁盘。

    【讨论】:

      【解决方案3】:

      尝试完全删除所有索引。因为我实际上不确定何时更新此索引。在每个 SET 期间,或在表中的所有 chages 之后。如果答案是 - 在更新每一行之后,那真的很慢。

      【讨论】:

        猜你喜欢
        • 2014-05-16
        • 2013-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-31
        • 2015-05-12
        • 1970-01-01
        相关资源
        最近更新 更多