sql处理的查询数量限制是多少?

时间:2013-04-09 20:07:47

标签: php mysql sql

伙计我正在尝试更新有6万行的表格,这是我的代码:

只是忽略代码的逻辑,只需看看它拥有的查询数和循环数。我打算对主查询设置一个限制,但我希望它是SQL的最大限制,这样我就可以节省时间。任何想法的人?

$query=mysql_query("SELECT DISTINCT(nid) FROM `comment` LIMIT ");
//mysql_query("UPDATE comment set thread = '00/' WHERE pid = 0 and uid = 333333");

while($result=mysql_fetch_array($query))
{
    $query2=mysql_query("SELECT cid,pid,thread FROM comment WHERE nid = ".$result['nid']." ORDER by created");

    while($result2=mysql_fetch_array($query2)){ 

    $nodethread = 0;


        if($result2['pid'] == 0)
            $thread = int2vancode($nodethread) . "/";


        else{           

            $parent = (string) rtrim((string) $result2['thread'], '/');
            $parent=explode('.',$parent);
            echo $parent." this is parent</br>";

            $max=max($parent);

            if($max == '')
            {
            $thread = $result['thread'].'.'.int2vancode(0) .'/';
            }
            else
            {
                  //$parts = explode('.', $max);
                  $parent_depth = count($parent);
                  echo "parent".$parent_depth;
                  $last = $parent[$parent_depth];
                  $thread = $result2['thread'] .'.'. int2vancode(vancode2int($last) + 1) .'/';
            }


        }
        mysql_query("UPDATE comment set thread = '$thread' where cid = ".$result2['cid']."");

    }

}

总结一下我的代码,我先来了一个:

while loop for my first query
then i have another while loop inside for my second query
and lastly i have an update inside.

1 个答案:

答案 0 :(得分:0)

我认为你想要解决的问题是并发

INSERT / UPDATE / DELETE操作需要锁定才能运行。 MyISAM表将在这些表运行时锁定整个表,而InnoDB通常只锁定受影响的行。如果运行的查询需要访问这些表/行,即使是SELECT,它也会排队,直到删除锁。

如果其他查询在其间运行并不重要,那么您似乎正在解决 应该之前的一小部分微小查询。如果它确定,那么您需要切换到InnoDB并使用事务。但是,就目前情况而言,你可能不会对并发查询相互减慢有太多问题。