MySQL:UPDATE太慢了

时间:2011-02-19 06:58:07

标签: mysql database

以下是我必须运行的一系列查询的基准。如您所见,UPDATE明显慢于其他查询。 我该怎么做才能加快速度?

0.0002  LOCK TABLE category WRITE; 
0.0004  
        SELECT
            @myLeft := left_id
        FROM
            category
        WHERE
            `amazon_browse_node_id` = 2675;

0.0184  UPDATE category SET right_id = right_id + 2 WHERE right_id > @myLeft; 
0.0161  UPDATE category SET left_id = left_id + 2 WHERE left_id > @myLeft; 
0.0007  INSERT INTO category(`name`, `amazon_browse_node_id`, `category_seo_friendly_url`, `left_id`, `right_id`) VALUES('Training', 2697, 'training-2697/', @myLeft + 1, @myLeft + 2); 
0.0004  UNLOCK TABLES;

这个问题与以下问题(以及我尝试解决方案)有关,我也在这里发布了SO:

  1. MySQL: nested set is slow?
  2. MySQL trigger in order to cache results?
  3. 更新

    CREATE TABLE IF NOT EXISTS `category`
      (
         `category_id`               INT(11) NOT NULL AUTO_INCREMENT,
         `name`                      CHAR(255) DEFAULT NULL,
         `category_seo_friendly_url` CHAR(255) DEFAULT NULL,
         `left_id`                   INT(11) DEFAULT '1',
         `right_id`                  INT(11) DEFAULT '2',
         PRIMARY KEY (`category_id`),
         UNIQUE KEY `seo_friendly_url_UNIQUE` (`category_seo_friendly_url`),
         KEY `category_id` (`category_id`),
         KEY `left_id` (`left_id`),
         KEY `right_id` (`right_id`)
      )
    

2 个答案:

答案 0 :(得分:5)

您可能在表格上有一个索引

  1. 加速SELECT查询
  2. 因为索引需要更新而减慢UPDATE查询
  3. INSERT语句只添加一条记录,这意味着比更新N条记录更快。

答案 1 :(得分:-1)

唯一可以帮到的是right_id和left_id上的正确键。即使这样,更新也比选择或插入慢。你无能为力。