我的查询存在问题......
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
对此查询很重要......
有没有其他方法来编写此查询或如何解决此问题?
答案 0 :(得分:4)
的
MAX_JOIN_SIZE
和SQL_BIG_SELECTS
不允许您运行会导致服务器挂起的长查询。
在运行查询之前使用它:
SET OPTION SQL_BIG_SELECTS = 1
或使用此:
SET SQL_BIG_SELECTS=1
答案 1 :(得分:0)
对于那些像我一样第一次看到这个的人......
this =>
$ setupMySql = mysql_query(" SET OPTION SQL_BIG_SELECTS = 1") 或死('无法完成SETUP BIG SELECTS,因为:' .mysql_error());