我有大约 70 000 行的表格。我需要查找、更改和保存 6000 行(我必须经常这样做,每周几次)。目前,我是这样做的,完成时间超过 2 分钟:(有什么建议吗?:( )
$query = mysql_query("SELECT meta_value FROM my_table WHERE meta_key = 'key' AND meta_value LIKE '%something%'")or die(mysql_error());
$new = "soemthing something";
while($row = mysql_fetch_array($query)){
$old = unserialize($row['meta_value']);
$new_meta_r = str_replace($old['color'],$new,$old);
$new_meta = serialize($new_meta_r);
$update_meta = mysql_query("UPDATE my_table SET meta_value = '$new_meta' WHERE meta_key = 'key' AND meta_value LIKE '%something%'")or die(mysql_error());
}
最佳答案
以下是一些有助于优化的方法:
- 尝试获取除 meta_value 之外的 ID,并在使用更新时仅引用 ID。
- 检查您是否真的需要使用整个通配符,或者您可以将其添加到后缀或前缀中。
含义:
#Full wildcard
SELECT * FROM TABLE WHERE COLUMN LIKE '%something%';
#Postfix wildcard
SELECT * FROM TABLE WHERE COLUMN LIKE 'something%';
#Prefix wildcard
SELECT * FROM TABLE WHERE COLUMN LIKE '%something';
- 确保您使用了正确的数据类型,varchars 的大小正确,使用 int 而不是 BigInt 等。
- 尝试将查询移动到存储过程,编译存储过程(SQL 代码不是),使它们比 SQL 代码更快。
关于php - 优化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10997415/