2015-04-14 94 views
0

我將從解釋我的場景開始:我正在創建一個MMORPG,並且希望更好地瞭解將物品存儲在庫存中的最有效方法。從我的研究中,我發現大多數遊戲都有一個INVENTORY表,其中行具有ITEM_ID,ITEM_QUANTITY,USER_ID和SLOT_ID。數據庫如何循環遍歷行?

我在想這個表可能有數百萬行。

所以,如果我用一個簡單的語句,如:

SELECT ITEM_ID 
FROM INVENTORY 
WHERE USER_ID = 25; 

那麼如何數據庫真正「發現」返回的結果?是否必須「循環」每一條記錄直到找到匹配?我擔心的是,如果事實上是這樣做的話,那麼SELECT FROM WHERE語句不會永久存在嗎?

感謝, 伊恩

+0

索引,伊恩,索引。 – Aify

+0

閱讀[索引](http://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html)。 – axiac

+0

還請記住,您不必使用關係數據庫。對於非常大的數據,您最終會切換到諸如hbase之類的東西,它們完全不同地處理數據檢索。 – azurefrog

回答

0

您需要按照創建表的一些基本原則。

  1. 有一個ID列
  2. 保持歸表(檢查表正常化在線,你會發現很多的東西)。
  3. 在列上添加索引。例如:在庫存表中,如果您經常使用where條件,則可以在user_id列上有索引。 user_id上的索引通過user_id對錶數據進行分組,並導致更快的查詢執行。
+0

不要使用代碼格式來處理不是代碼的文本。 – EJP