0

我們公司最近註冊了一個特許經營店,爲他們的客戶提供我們的POS(收銀機)應用程序,使我們每週有大約3-5個新註冊。目前,我們爲每個新客戶創建應用程序數據庫的副本,但是我可以告訴您,這種方法最終會讓我們感到壓力。我們想,也許最好在每張桌子上用某種形式的客戶端ID標識的所有診所使用一個數據庫。具有大量記錄的數據庫是否會影響讀取速度? (MySQL)

現在我們陷入了一下關於該主題辯論:一個同事說的話有50,000一張大桌子會使事情太慢了,我們不得不優化整個應用程序。另一位同事說MySQL設計用於處理大型數據庫,並且只要您在每個查詢WHERE子句中指定客戶端ID,您就會收到數據的一個子集,幾乎不會改變速度。

將從一個大的表選擇數據的子集(100,000)具有從一個較小的表中選擇相同的行數的任何顯著速度差?

此外,其上的路要走數據庫設計的任何建議,將不勝感激。

+0

不,100k記錄是一個相對較小的表;如果你的數據庫服務器足夠好,對性能的影響將會很小。與所有你必須首先測試的一樣。但是,您必須記住,您的客戶可能不希望將數據與競爭對手的數據合併。 – Ben

回答

1

數據大小會影響性能,但通過適當的索引,在50-100k記錄中查找應該不會有任何問題。與我一起工作的生產數據庫(約125萬條記錄)通過主鍵查找記錄的時間可以忽略不計(小於0.005秒)。

還是取決於你的實際使用;你可能最終不得不優化一些查詢並添加一些額外的索引。

0

我會分裂「時間成幾個較小的表,而不是一個長期和大表。如果設計和索引正確,從長遠來看應該更快。

+2

你有什麼理由對你的陳述? – Ben

0

爲了增加選擇(讀取)查詢的速度,你可以索引添加到您查詢的列。

例如,如果你通過某種診所標識的查詢,你可以把對列的索引。這將幫助數據庫遍歷數據並查找符合條件的記錄,而不必查看數據庫中的每條記錄(這是發生減速的地方)。如果將來您以不同的標準(假設日期)進行查詢,那麼您也可以在該列上添加索引。

請記住,添加索引將提高運行時性能,但會增加存儲數據所需的物理磁盤大小。

+0

我認爲這個指數是隱含的問題。 – Ben

+0

問題中的情境暗示影響了我回復中的詳細程度。 – rynmrtn

相關問題