2012-05-21 60 views
1

我目前有一個用於GPS跟蹤目的的大型數據庫。每當新人開始向我發送位置時,會發生什麼情況,我會創建一個具有唯一名稱的新數據庫。然後我開始向這張表添加行。有諸如高度,經度,緯度等的列。我應該結合我的MySQL表嗎?

情況是,這些表中的一些表可能包含超過100,000個位置(行)。我現在在數據庫中也有大約600個表格。搜索所有這些表非常困難,它需要我運行「SHOW表」查詢,然後對每個表運行查詢以獲取我需要的數據。

問題分解爲:我應該將所有這些表合併成一個可能包含1,000,000行以上的巨大表格。然後我將添加一列來分隔不同的用戶。這將使運行查詢更容易,因爲我現在需要一個單一的查詢而不是多個查詢。

這是否使系統更快或更慢?你需要更多信息才能回答這個問題嗎?

+0

單個記錄有多大?總體而言,如果您使用適當的索引,1m行應該不成問題。 – eggyal

+0

我同意,但會更快還是更慢? – allen213

+0

單個記錄大約有8列,都沒有太多數據(沒有文本斑點等) – SeBsZ

回答

2

具有適當索引的1,000,000行+可能工作正常,但由於行將會增加,您將很快等待查詢執行。我認爲這不是一個好主意。你可以做的是,創建這樣的表格,將所有行插入它並嘗試一些查詢。你會親眼看到它的表現如何。然後可以確定的是,生成一些隨機數據並增加數百萬(達到預期的大小)。如果它仍然表現良好,那麼你有你的答案。查詢速度在很大程度上取決於硬件,因此回答這些問題並不容易。嘗試做一些測試。

+0

我可以按照您的建議創建這樣的表格,只需嘗試一下。 – SeBsZ

0

如果您打算經常同時搜索所有表,那麼幾乎肯定值得組合這些表並添加用戶標識符列。將索引添加到此表(對於經常搜索的列)將大大提高性能。

單個查詢將近總是比跨不同表的多個查詢更快,特別是如果您排序結果。

0

爲什麼沒有location_id,海拔,經度和緯度的表格。擁有結合高度,經度和緯度的獨特按鍵。

有另一個表,也許user_location,與user_id和location_id。 location_id這裏是上表的FOREIGN KEY。

由於user_id和location_id是它們各自表中的PRIMARY KEYS,這意味着自動INDEXED,所以它應該沒有問題。

此外,位置表將有一段時間飽和。