Php 表更新速度慢
我在OpenCart中有一个Php 表更新速度慢,php,mysql,Php,Mysql,我在OpenCart中有一个产品表,共有57000条记录。它看起来像: Field Type Null Key Default Extra product_id int(11) NO PRI NULL auto_increment model char(64) NO NULL sku char(100) NO UNI NULL upc char(1) NO NULL
产品
表,共有57000条记录。它看起来像:
Field Type Null Key Default Extra
product_id int(11) NO PRI NULL auto_increment
model char(64) NO NULL
sku char(100) NO UNI NULL
upc char(1) NO NULL
ean char(1) NO NULL
jan char(1) NO NULL
isbn char(1) NO NULL
mpn char(1) NO NULL
location char(1) NO NULL
quantity int(4) NO 0
stock_status_id int(11) NO NULL
image char(255) YES NULL
manufacturer_id int(11) NO MUL NULL
shipping tinyint(1) NO 1
pret_brut decimal(15,2) NO 0.00
price decimal(15,2) NO 0.00
points int(8) NO 0
tax_class_id int(11) NO NULL
date_available date NO NULL
weight decimal(15,8) NO 0.00000000
weight_class_id int(11) NO 0
length decimal(15,8) NO 0.00000000
width decimal(15,8) NO 0.00000000
height decimal(15,8) NO 0.00000000
length_class_id int(11) NO 0
subtract tinyint(1) NO 1
minimum int(11) NO 1
sort_order int(11) NO 0
status tinyint(1) NO MUL 0
date_added datetime NO 0000-00-00 00:00:00
date_modified datetime NO 0000-00-00 00:00:00
viewed int(5) NO 0
使用的索引:
PRIMARY BTREE Yes No product_id 56399 A No <br/>
sku BTREE Yes No sku 56399 A No<br/>
manufacturer_id BTREE No No manufacturer_id 386 A No<br/>
+status BTREE No No status 1 A No<br/>
+date_available 440 A No<br/>
PRIMARY BTREE Yes No产品\u id 56399 A No
sku B目录是否sku 56399 A否
制造商id B树号无制造商id 386 A号
+状态B无树无状态1无
+日期\u可用440 A编号
。。。最后一个(带“+”)是多个字段的索引(我不知道它的技术名称)
问题是,当我在该表上运行“更新产品集库存状态id=5,数量=0,状态=0”这样的查询时,我会在0.8到1.5秒之间通过PHP的microtime()函数。也许我有点偏执,但这似乎太过分了。有没有办法提高更新时间
LE:
PRIMARY BTREE Yes No product_id 56399 A No <br/>
sku BTREE Yes No sku 56399 A No<br/>
manufacturer_id BTREE No No manufacturer_id 386 A No<br/>
+status BTREE No No status 1 A No<br/>
+date_available 440 A No<br/>
我想禁用该表中的所有产品,然后只更新活动的产品。我不知道这是否是最好的方法,但我认为最好是检查每一个。还有其他更快的方法吗?为什么不使用WHERE对记录进行分块,使用WHERE子句可以缩短更新时间 像这样试试
UPDATE product SET stock_status_id=5, quantity=0, status=0
WHERE
status!=0;
为什么不使用WHERE对记录进行分块,使用WHERE子句可以缩短更新时间 像这样试试
UPDATE product SET stock_status_id=5, quantity=0, status=0
WHERE
status!=0;
为什么不使用WHERE对记录进行分块,使用WHERE子句可以缩短更新时间 像这样试试
UPDATE product SET stock_status_id=5, quantity=0, status=0
WHERE
status!=0;
为什么不使用WHERE对记录进行分块,使用WHERE子句可以缩短更新时间 像这样试试
UPDATE product SET stock_status_id=5, quantity=0, status=0
WHERE
status!=0;
您的
UPDATE
查询,按照您的公式,将更新表中的所有行。它以大约每两百微秒一行的速度运行。这是出色的表现
通过这样做,您可能会让它运行得更快一些:
UPDATE product SET stock_status_id=5, quantity=0, status=0
WHERE status <> 0
OR quantity <> 0
OR stock_status_id <> 5
更新产品集库存\状态\ id=5,数量=0,状态=0
其中状态0
或数量0
或库存状态id 5
这将避免更新已经重置的行。您的
UPDATE
查询,按照您的公式,将更新表中的所有行。它以大约每两百微秒一行的速度运行。这是出色的表现
通过这样做,您可能会让它运行得更快一些:
UPDATE product SET stock_status_id=5, quantity=0, status=0
WHERE status <> 0
OR quantity <> 0
OR stock_status_id <> 5
更新产品集库存\状态\ id=5,数量=0,状态=0
其中状态0
或数量0
或库存状态id 5
这将避免更新已经重置的行。您的
UPDATE
查询,按照您的公式,将更新表中的所有行。它以大约每两百微秒一行的速度运行。这是出色的表现
通过这样做,您可能会让它运行得更快一些:
UPDATE product SET stock_status_id=5, quantity=0, status=0
WHERE status <> 0
OR quantity <> 0
OR stock_status_id <> 5
更新产品集库存\状态\ id=5,数量=0,状态=0
其中状态0
或数量0
或库存状态id 5
这将避免更新已经重置的行。您的
UPDATE
查询,按照您的公式,将更新表中的所有行。它以大约每两百微秒一行的速度运行。这是出色的表现
通过这样做,您可能会让它运行得更快一些:
UPDATE product SET stock_status_id=5, quantity=0, status=0
WHERE status <> 0
OR quantity <> 0
OR stock_status_id <> 5
更新产品集库存\状态\ id=5,数量=0,状态=0
其中状态0
或数量0
或库存状态id 5
这将避免更新已重置的行。您的
UPDATE
查询中的WHERE
子句是什么?(可能您不打算更新所有行。)您提到了“使用的索引”。请确保您已经向我们显示了所有索引以及多列索引中的所有列。使用WHERE可以减少一点时间,但在我看来仍然很慢,因为我禁用了所有产品,然后从提要中获取产品,并更新提要中存在的产品的状态/库存/价格。。。整个过程大约需要20秒。您的UPDATE
查询中的WHERE
子句是什么?(可能您不打算更新所有行。)您提到了“使用的索引”。请确保您已经向我们显示了所有索引以及多列索引中的所有列。使用WHERE可以减少一点时间,但在我看来仍然很慢,因为我禁用了所有产品,然后从提要中获取产品,并更新提要中存在的产品的状态/库存/价格。。。整个过程大约需要20秒。您的UPDATE
查询中的WHERE
子句是什么?(可能您不打算更新所有行。)您提到了“使用的索引”。请确保您已经向我们显示了所有索引以及多列索引中的所有列。使用WHERE可以减少一点时间,但在我看来仍然很慢,因为我禁用了所有产品,然后从提要中获取产品,并更新提要中存在的产品的状态/库存/价格。。。整个过程大约需要20秒。您的UPDATE
查询中的WHERE
子句是什么?(可能您不打算更新所有行。)您提到了“使用的索引”。请确保您已经向我们显示了所有索引以及多列索引中的所有列。使用WHERE可以减少一点时间,但在我看来仍然很慢,因为我禁用了所有产品,然后从提要中获取产品,并更新提要中存在的产品的状态/库存/价格。。。整个过程大约需要20秒。我在WHERE条件下得到0.9-1.1秒,没有大的改进在WHERE条件下得到0.9-1.1秒,没有大的改进在WHERE条件下得到0.9-1.1秒,没有大的改进在WHERE条件下得到0.9-1.1秒,没有什么大的改进在这些条件下可以得到0.9-2.5秒。我认为索引“数量”和“库存状态”将有助于此查询,但在下一次更新时会增加很大的延迟