相关疑难解决方法(0)

任何方式选择而不会导致MySQL锁定?

查询:

SELECT COUNT(online.account_id) cnt from online;
Run Code Online (Sandbox Code Playgroud)

但是在线表也被事件修改,因此我经常可以通过运行看到锁定show processlist.

MySQL中是否有任何语法可以使select语句不引起锁定?

而且我忘了在上面提到它是在MySQL奴隶数据库上.

我加入my.cnf:transaction-isolation = READ-UNCOMMITTED 奴隶后会遇到错误:

错误'无法进行二进制日志记录.消息:InnoDB中的事务级别"READ-UNCOMMITTED"对于查询的binlog模式"STATEMENT"不安全

那么,是否有兼容的方法来做到这一点?

mysql locking

119
推荐指数
4
解决办法
20万
查看次数

MySQL循环查询与使用SQL连接

我正在公司内部讨论如何在这个问题上循环查询:

$sql = "
  SELECT foreign_key
  FROM t1";

foreach(fetchAll($sql) as $row)
{
  $sub_sql = "
    SELECT *
    FROM t2
    WHERE t2.id = " . $row['foreign_key'];

  foreach(fetchAll($sub_sql) as $sub_row)
  {
    // ...
  }
}
Run Code Online (Sandbox Code Playgroud)

而不是像这样使用sql连接:

$sql = "
  SELECT t2.*
  FROM t2
  JOIN t1
  ON t1.foreign_key = t2.id";

foreach(fetchAll($sql) as $row)
{
  // ...
}
Run Code Online (Sandbox Code Playgroud)

关于这个的额外信息,数据库是巨大的,数百万行.

我当然搜索了这个问题的答案,但是没有人能以一种好的方式回答这个问题,并且通过大量的投票让我确信一种方式比另一方更好.

有人可以向我解释为什么其中一种方法比另一种更好?

php mysql sql

7
推荐指数
2
解决办法
2474
查看次数

标签 统计

mysql ×2

locking ×1

php ×1

sql ×1