嘿,我一直在研究SQL_BIG_SELECTS,但是到目前為止,MySQL文件一直没有帮助.我正在尋找一些防止出現以下錯誤的见解。
ERROR 1104: The SELECT would examine too many records and probably take a very long time. Check your WHERE and use SET OPTION SQL_BIG_SELECTS=1 if the SELECT is ok
- MySQL決定查詢多少行為"大選擇"?
- 正確的索引編製通常可以解決此問题吗?
- 是將SQL_BIG_SELECTS视為"最後的選擇",還是好的做法?
- 有人將如何在配置中設置" SQL_BIG_SELECTS = 1"(無需執行查詢)?
- 還有其他值得了解的替代方法吗?
提前谢谢!
最新回復
- 5月前1 #
- 5月前2 #
您不能設置
SQL_BIG_SELECTS
在my.cnf或服務器啟動時,因為它是仅会话引數.我正在使用MySQL 5.0.60.這種變數不支援。我在Symfony應用程式中遇到了同樣的問题,顯示了這个令人讨厌的錯誤:
The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
但是您可以增加varialbe的數量
max_join_size与sql_big_selects相關
我能够以特權的mysql使用者身份執行命令来修複它:
# SET GLOBAL max_join_size=18446744073709551615;
或者您可以將其包含在my.cnf中,因為允许在配置檔案中設置max_join_size
好吧,我希望這能對其他人有所帮助。
- 5月前3 #
我在db中有超過2000k的記錄,而我的查詢是大型選擇,它详尽地比较了某些欄位的重複删除和更新..
mysql
告诉了我同樣的道理 (答案日期的当前版本),我最终使用了index
在涉及where
的2个领域上 條款...這也應该對其他人有帮助...對我有用的步骤是:在欄位上設置索引
分析表
執行查詢
HTH
- 5月前4 #
以下命令對我有用
SET GLOBAL max_join_size=18446744073709551615;
但是我需要放入my.cnf檔案而不是命令什麼? 順便說一句,我正在使用" 5.6.12 MySQL Community Server"
相似問題
- sql:MySQL Select查詢-仅获取值的前10个字元mysqlsqlselect2021-01-09 00:23
- MySQL select語句是CASE還是IF ELSEIF? 不確定如何获得結果mysqlselectcase2021-01-08 19:54
MySQL根据" max_join_size"的值確定查詢是否為"大選擇".如果查詢可能需要檢查的行數超過此數目,則將其视為"大選擇".使用"顯示變數"查看最大連線大小的值。
我相信索引以及特別好的where子句可以防止出現此問题。
SQL_BIG_SELECTS用於防止使用者意外執行過大的查詢.可以在mysql.cnf中將其設置為ON或在啟動時使用命令列選項。
您可以在my.cnf或服務器啟動時設置SQL_BIG_SELECTS.也可以与
SET SESSION SQL_BIG_SELECTS=1
进行会话設置我想不到.我只是檢查您的查詢以確保您確實需要使用它.我们的服務器預設情况下將其打開,並且max_join_size非常大。