我的SQL查詢出現問題,它運行得非常快,除非它不返回任何結果。MySQL - 查詢速度很慢沒有結果(null)
我有4個表:世界(2項),球員(約2000項),world_chunk(約16000項)和world_block(約1萬件)
SELECT bid,playername FROM worlds
JOIN world_chunks ON worlds.id = world_chunks.mainid
JOIN world_blocks ON world_chunks.cid = world_blocks.cid
JOIN players ON world_blocks.player = players.pid
WHERE worldname='world' AND x='-684' AND y='63' AND z='-2234' AND cx ='-43' AND cz='-140'
X,Y,Z舉行在world_blocks和cx中,cz被保存在world_chunks和worldname世界中 所有索引都被設置,並且對於所有內容都是非常快的,只是空的結果。
無論如何我可以加快空結果嗎?
非常感謝你們的幫助。
編輯: 這裏是分貝結構: http://pastebin.com/rxQQ5mzp
及其MySQL的InnoDB的
EXPLAIN on Emtpy Query:
1 SIMPLE worlds ALL PRIMARY,idx_mainid NULL NULL NULL 2 Using where
1 SIMPLE world_blocks ALL NULL NULL NULL NULL 766845 Using where; Using join buffer
1 SIMPLE world_chunks eq_ref PRIMARY,idx_cid PRIMARY 4 WatchBlock.world_blocks.cid 1 Using where
1 SIMPLE players eq_ref PRIMARY,idx_pid PRIMARY 4 WatchBlock.world_blocks.player 1
EXPLAIN on Found Query:
1 SIMPLE worlds ALL PRIMARY,idx_mainid NULL NULL NULL 2 Using where
1 SIMPLE world_blocks ALL NULL NULL NULL NULL 766845 Using where; Using join buffer
1 SIMPLE world_chunks eq_ref PRIMARY,idx_cid PRIMARY 4 WatchBlock.world_blocks.cid 1 Using where
1 SIMPLE players eq_ref PRIMARY,idx_pid PRIMARY 4 WatchBlock.world_blocks.player 1
結果可以是空的爲x,y,z和CX,CZ不匹配(因此,如果一個這些不是在db中,玩家的結果應該是空的)
「All Indexes are set」*全部* ?!你的意思是你在每一列上都有一個列索引?或者你的意思是你嘗試了所有可能的多列索引,包括所有列列的排列?我懷疑你是這麼做的。你能說明你有什麼指數。 –
請發表正面結果和負面結果的'EXPLAIN'。 – philwinkle
我已經設置了ID,mainid,cid,pid的索引 – user1455025