首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql隐形进程?

Mysql隐形进程?
EN

Stack Overflow用户
提问于 2012-08-08 09:08:30
回答 2查看 134关注 0票数 1

这是一张桌子

代码语言:javascript
复制
Id   Date   Name     vendor
1   | 123  |  jungle     |  qwe
2   | 43   |  jungle     |  qwe
3   | 678  |  jungle     |  ewq
4   | 678  |  jungle     |  ewq
5   | 678  |  jungle     |  ewq
6   | 678  |  jungle     |  hgjghj

此脚本从表中删除名称列中具有重复值且具有相同供应商值的行。只留下一个唯一的行。在单击前端的按钮后,还可以通过XHR ajax调用$.post()执行该脚本。

代码语言:javascript
复制
$sql = DELETE x
FROM $table x
JOIN 
 ( SELECT vendors
        , email
        , MIN(lead_id) min_lead_id 
     FROM $table
    WHERE vendors = $vendor
    GROUP BY vendors
           , email
 ) y 
ON y.vendors = x.vendors 
AND y.email = x.email
AND y.min_lead_id <> x.lead_id;

mysql_query($sql, $conn);
echo json_encode($foo);

结果呢?

代码语言:javascript
复制
Id   Date   Name     vendor
1   | 123  |  jungle     |  qwe
3   | 678  |  jungle     |  ewq
6   | 678  |  jungle     |  hgjghj

现在有了50k的表,它在两秒钟内完成。或者更确切地说,它通过echo json_encode($result);返回ajax调用。现在,我假设这个过程已经完成,但是在进入我的mysql表并一次又一次刷新之后,我发现mysql仍然在运行,因为表中报告的总行数一直在变化,就好像它的查询仍然在运行一样。

如何让echo json_encode($result);等待数据库更新完成?或者有更好的方法来解决这个问题?谢谢。

代码语言:javascript
复制
$("#complete_dedupe").live("click", function(e) {
    e.preventDefault();
    table_name = $('#IMEXp_import-selectTable-select option:selected').val();
    $.post("dedupevendor.php", {"table": table_name}, function(data) {
        count_dedupe = 0;
        count_dedupe = data;
        $("#dupe_vendor").append(count_dedupe);
        $("#tr2").fadeIn("slow");
        vendor = $("#vendor_hidden").val();
        $("#edit_par4").append(vendor);
    }, "json")
});

通过不断刷新phpmyadmin,圆圈数字会在不到一分钟的时间内发生变化。这只发生在我运行重复数据删除脚本之后,并且脚本已经从ajax调用返回之后。图片如下所示

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-08 11:01:31

您看不到phpMyAdmin变化的原因是Innodb没有像MyISAM那样保持行数。

运行下面的命令,而不是查看表摘要;当您运行去重脚本时,它应该会发生变化。

代码语言:javascript
复制
SELECT COUNT(*) FROM auto;
票数 2
EN

Stack Overflow用户

发布于 2012-08-08 10:42:16

试试这个:

代码语言:javascript
复制
if(mysql_query($sql, $conn))
{
  echo json_encode($foo);
}

这样,只有在mysql_query()返回值之后,数据才会返回到调用ajax脚本,这应该只有在函数完成处理之后才会发生

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11856328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档