2013-05-21 36 views
0

我有一個非常龐大的數據庫(MySQL的)7個表(1000000記錄每次)我用很簡單的查詢,調用信息,如:如何加快我的SQL查詢?

select * from matches where match_date='$date' 
SELECT * FROM countries WHERE country_id IN (SELECT country_id FROM tournaments WHERE id='$id') 
SELECT * FROM tournaments WHERE id='$id' 

我的where子句的查詢是在使用索引的所有列更快但只是一點。

有沒有人有任何幫助的想法,以提高速度指數?

+0

你從服務器得到響應還是有超時錯誤? – Somar

+0

這些索引是什麼樣的?例如,如果你的'matches'表有'match_id,match_name,match_date'和'match_name,match_date'上的索引,那麼在技術上你有一個'match_date'的索引,但是它沒有被完全優化。 –

+0

向我們展示表格結構 – Stephan

回答

1

最壞的要求似乎是這樣的一個:

SELECT 
     * 
FROM 
    countries 
WHERE 
     country_id IN (
SELECT 
    country_id 
FROM 
    tournaments 
WHERE 
    id='$id') 

嘗試使用此:

SELECT 
     countries.* 
FROM 
     countries 
INNER JOIN 
     tournaments 
ON 
     countries.country_id=tournaments.country_id 
AND 
     tournaments.id=$id 

指數這些列:

  1. countries.country_id
  2. 比賽。 country_id
  3. tournaments.id

並更好地使用列名稱而不是*。