Harinder Harinder - 6 months ago 36
MySQL Question

Error SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=#

I am facing a problem with my query ...

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


Every thing was good when database was small but as database become big I am getting this error

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


But when I remove

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


Problem gets solved ... But
order by
is important for this query ...

is there any other way to write this query or how can I solve this problem ??

Answer

the MAX_JOIN_SIZE and SQL_BIG_SELECTS won't let you run long queries which will hang the server.

Use this before running the query:

 SET OPTION SQL_BIG_SELECTS = 1

or use this:

SET SQL_BIG_SELECTS=1

chek this