MySQL - SQL_BIG_SELECTS

Mat*_*att 26 mysql select

嘿,我一直在调查SQL_BIG_SELECTS,但到目前为止MySQL文档一直没有用.我正在寻找一些见解,以防止出现下面的错误.

错误1104:SELECT会检查太多记录,可能需要很长时间.如果SELECT正常,请检查您的WHERE并使用SET OPTION SQL_BIG_SELECTS = 1

  1. 在MySQL确定查询是"大选择"的行数是多少?
  2. 适当的索引通常会解决这个问题吗?
  3. SQL_BIG_SELECTS被认为是"最后的手段",还是好的做法?
  4. 如何在配置中设置"SQL_BIG_SELECTS = 1"(无需执行查询)?
  5. 还有其他值得了解的选择吗?

提前致谢!

jon*_*ohn 40

  1. MySQL基于'max_join_size'的值确定查询是否是"大选择".如果查询可能必须检查超过此行数,则会将其视为"大选择".使用'show variables'查看最大连接大小的值.

  2. 我认为索引和特别好的where子句将防止出现此问题.

  3. SQL_BIG_SELECTS用于防止用户意外执行过大的查询.可以在mysql.cnf中将其设置为ON或在启动时使用命令行选项.

  4. 您可以在my.cnf或服务器启动时设置SQL_BIG_SELECTS.它也可以在会话的基础上设置SET SESSION SQL_BIG_SELECTS=1.

  5. 不是我能想到的.我会检查您的查询以确保您确实需要使用它.我们的服务器默认打开它,max_join_size非常大.

  • 在'join'中使用的表上设置正确的索引也可以解决问题 - 就这样做了. (2认同)