2011-01-17 72 views
0

我有一個數據庫中的任何數量的用戶(這可能是100,2000或3)我在做什麼是使用mysql「顯示錶」和存儲表名稱在一個數組,然後我運行一個while循環,並獲取每個表名稱(用戶的名稱)並將其插入到一些代碼中,然後我爲每個表名稱運行一段代碼。擁有3個用戶,該腳本大約需要20秒。它使用Twitter API並執行一些mysql插入。這是否是最有效的方式?最有效的方法來做到這一點PHP腳本

+0

那麼每個用戶都得到自己的表? – ndtreviv

+0

是的,這是不對的?我不想在一個表內混合用戶 – benhowdle89

+0

爲什麼每個用戶都有單獨的表格?這是因爲Twitter嗎?你代表建議你不可能自己設計這樣一個系統。 – Tesserex

回答

5

當然不是!

我不明白爲什麼你將每個用戶存儲在他們的表中。你應該創建一個users表並從那裏選擇。

它將在0.0001秒內運行。

更新:

表中有行和列。您可以將多個用戶存儲在行中,並將每個用戶的信息存儲在列中。

請嘗試一些數據庫設計教程/書籍,他們會幫助你很多。

+0

我這樣做是因爲每個用戶都有一個名爲tweet_id和tweet的列。我將如何做到這一點,但有一個表稱爲用戶? – benhowdle89

+0

我會解決這個問題,只需添加一下,查看通用數據庫設計。這可能會讓其他開發者感到驚訝,但我實際上聽說過其他人提出過這個設計想法。老實說,我不確定這個想法源自於對錶格之間的連接缺乏理解,但是,唉,這是最好的答案。我可以想象世界上沒有生產系統會爲每個用戶創建表格。這是瘋狂。 – cgp

0

如果您擔心爲同一用戶表中的每個用戶存儲多個條目,則可以爲推文指定一個單獨的表,其中tweet_id指向用戶。

我肯定會去一個用戶表。

+0

好吧,聽起來不錯。我想每個人都比桌子好多了 – benhowdle89

0

數據庫針對處理多行進行了優化;一些使用的技術是索引,磁盤上數據的物理佈局等。許多表上的操作總是會比較慢 - 這不僅僅是RDBMS的目標。

有一個例外 - 有時您通過分片(分區數據)優化數據庫,但這種方法具有與缺點一樣多的優點。其中一個缺點是像你所描述的查詢需要很長時間。

您應該將所有用戶放在一張表中,因爲從邏輯角度來看 - 它們代表一個實體。

相關問題