2014-03-25 84 views
3

我面對我的詢問一個問題...錯誤SET SQL_BIG_SELECTS = 1或SET使用max_join_size =#

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是importan噸爲這個查詢...

是否有任何其他方式來寫這個查詢或我該如何解決這個問題?

回答

4

MAX_JOIN_SIZESQL_BIG_SELECTS不會讓你運行長的查詢將掛起服務器。

運行查詢前使用此:

SET OPTION SQL_BIG_SELECTS = 1 

或使用本:

SET SQL_BIG_SELECTS=1 

chek this

+0

Thx它的工作,但我有一個問題......這會減慢查詢或將它加載到服務器上?並且可以安全使用? – Harinder

+0

這只是爲了讓您運行大型查詢,與安全無關地使用或減慢查詢。共享主機使這個不要掛在長查詢服務器。 –

+0

歡迎你,夥計,很高興你解決了你的問題:)。 –

0

對於那些像我一樣,誰看到這是第一次.. 。

this =>

$ setupMySql = mysql_query(「SET OPTION SQL_BIG_SELECTS = 1」) 或die('無法完成SETUP BIG SELECTS,因爲:'。 mysql_error());