错误SET SQL_BIG_SELECTS = 1或SET MAX_JOIN_SIZE =#

时间:2014-03-25 09:27:21

标签: php mysql sql

我的查询存在问题......

SELECT 
keywords.keyword,
keywords.keyid,
sources.s_title,
sources.s_disc,
sources.s_link,
sources.sourceid,
sources.s_link
FROM link_ks
INNER JOIN keywords ON link_ks.keyid = keywords.keyid
INNER JOIN sources ON link_ks.sourceid = sources.sourceid
INNER JOIN thumbsup_items ON link_ks.sourceid = thumbsup_items.name
WHERE link_ks.keyid = :keyid 
order by thumbsup_items.votes_up desc,thumbsup_items.votes_down asc,(thumbsup_items.votes_up+thumbsup_items.votes_down) desc

当数据库很小时,每件事情都很好但随着数据库变大,我收到了这个错误

 The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET
 SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay

但是当我删除

 order by thumbsup_items.votes_up desc,thumbsup_items.votes_down asc,
(thumbsup_items.votes_up+thumbsup_items.votes_down) desc

问题得到解决......但order by对此查询很重要......

有没有其他方法来编写此查询或如何解决此问题?

2 个答案:

答案 0 :(得分:4)

MAX_JOIN_SIZESQL_BIG_SELECTS不允许您运行会导致服务器挂起的长查询。

在运行查询之前使用它:

 SET OPTION SQL_BIG_SELECTS = 1

或使用此:

SET SQL_BIG_SELECTS=1

chek this

答案 1 :(得分:0)

对于那些像我一样第一次看到这个的人......

this =>

$ setupMySql = mysql_query(" SET OPTION SQL_BIG_SELECTS = 1")        或死('无法完成SETUP BIG SELECTS,因为:' .mysql_error());