SQL中的单行UPDATE查询需要3秒以上的时间

时间:2015-06-19 21:08:26

标签: mysql sql performance ubuntu

UPDATE `productData`.`productList`
    SET  `dateLastUpdated` = CURDATE(), 
         `totalReviews` = 100
    WHERE `productList`.`name` = 'FirstchefproUltraSharpDualJuliennePeelerVegetablePeelerStainless';

此查询需要2.93秒,并且只影响一行。

该表长约75k行。我没有太多的SQL经验,有更好的方法吗?更新单行不应该花费这么长时间

我在Ubuntu服务器上使用最新版本的SQL

如果您需要更多信息,请询问,我会将其添加到帖子中。

由于

编辑:

我实际上并不知道SQL和mysql在哪里有不同的东西。

选择陈述

SELECT *
FROM `productList`
WHERE `productList`.`name` = 'FirstchefproUltraSharpDualJuliennePeelerVegetablePeelerStainless';

需要2.88秒,所以我猜我的索引存在问题。

编辑:

谢谢你的帮助

当我尝试在名称上创建索引时,它会说:

ERROR 1170 (42000): BLOB/TEXT column 'name' used in key specification without a key length

编辑:

将名称切换为varchar(64)

现在快得多

谢谢大家

3 个答案:

答案 0 :(得分:1)

对于此查询:

WHERE

您需要UPDATE `productData`.`productList` SET `dateLastUpdated` = CURDATE(), `totalReviews` = 100 WHERE `productList`.`name` = 'FirstchefproUltraSharpDualJuliennePeelerVegetablePeelerStainless'; 上的索引:

productList(name)

答案 1 :(得分:0)

  1. WHERE user_id='12345' AND active=1 'AND product_id !=0001 AND product_id !=0002 ' ORDER BY RAND ...列上创建索引(如某些评论中所述)或
  2. 使用name语句中的索引列,例如如果您的表包含类似的内容,则为产品ID。

答案 2 :(得分:-1)

上创建索引
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<div ng-app ng-init="k=1;v.direction='positive'">
  <div class="tag" ng-class="[{0:'blue1', 1:'blue2', 2:'blue3'}[k], v.direction]">Term</div>

</div>