結果が返されない限り、完璧に高速に実行されるSQLクエリに問題があります。
私は4つのテーブルを持っています:worlds(2アイテム)、players(約2000アイテム)、world_chunk(約16000アイテム)、world_block(約100万アイテム)
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はworldsに保持されます。すべてのインデックスが設定され、空の結果を除くすべてに対して非常に高速です。
とにかく私は空の結果をスピードアップすることができますか?
皆さんの助けに感謝します。
編集:これがdb構造です:http: //pastebin.com/rxQQ5mzp
そのMySQLInnoDB
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が一致しないため、結果は空になる可能性があります(したがって、これらのそれぞれの1つがdbにない場合、プレーヤーの結果は空である必要があります)