2015-01-11 63 views
0
$result1 = mysql_query("SELECT distinct city FROM postcodedb WHERE web='ALR' ORDER BY city") or die(mysql_error()); 
while($row1=mysql_fetch_array($result1)) { 
    $city = $row1['city']; 
    $result = mysql_query("SELECT * FROM postcodedb WHERE area='$city' AND city='$city' LIMIT 1") or die(mysql_error()); 
    while($row=mysql_fetch_array($result)) { 
     $city = $row['city']; 
    } 
} 

所以看起來像這樣:我有MySQL查詢我想在數據庫中的記錄做出更快

--------------------- 
id city  area 
--------------------- 
1 Bromley Bromley <- I need this record 

2 Bromley other1 

3 Bromley other2 

4 Ilford Ilford <- and then this one 

5 Ilford other1 
--------------------- 

,並有一個分配給這些城市更多的城市和地區。

所以,我想要得到的是不同城市的上市,但重要的是,對我來說,我得到的行ID其中兩個cityarea是相同的?

這個查詢的工作原理是我想讓它工作,但有點慢,我相信有更好的方法來實現相同的結果?

我希望我清楚地解釋自己。

非常感謝您提前!

丹田

+1

是「城市」和「網絡」索引? –

+0

索引和緩存是你可以做的唯一的事情 – Rafael

+0

我如何緩存這些值? – Nita

回答

1

如果城市和地區都是一樣的,那麼就應該是在查詢條件:

SELECT distinct city 
FROM postcodedb 
WHERE web = 'ALR' and city = area 
ORDER BY city; 

理想的情況下,就沒有重複的,這樣你就可以消除distinct

SELECT city 
FROM postcodedb 
WHERE web = 'ALR' and city = area 
ORDER BY city; 

對於此查詢,您需要索引postcodedb(web, city, area)以獲得最佳性能。

+0

對於性能,您將有一個查詢而不是兩個!?!? – Strawberry

+0

偉大的thx很多Gordon,正是我一直在尋找。 – Nita

0
$result1 = mysql_query("SELECT distinct city FROM postcodedb WHERE web = 'ALR' and city = area ORDER BY city") or die(mysql_error()); 
while($row1=mysql_fetch_array($result1)) { 
$city = $row1['city']; 
} 

1查詢,而不是2.可見的性能提高。工作速度更快。

謝謝你們。

相關問題