所以據我所知在mysql中沒有集合,列表,字典或數組。我想建立一個有兩個核心組件的系統,一個遊戲比賽的信息,然後是比賽中的角色列表。如果有在MySQL中列出,那麼我會做這樣的事情:在mysql中正確地組織數據
game_id INT,
characters list<varchar>,
....more data
,我希望能夠做的基本的查詢是這樣的:
SELECT * FROM games WHERE characters IN LIST(list);
它可能我可以選擇只有一個字符,或者我可以指定10個字符。問題是如何在mysql中有效地執行此操作,與使用OR
中的10 WHERE
子句相比。也沒有特定的字符排序......但我想我可以根據他們的ID來訂購它們。
我認爲這樣做的唯一方法就是創建第一張帶有基本信息的表格,第二張帶有字符id和game_id的表格。
任何人都有關於如何很好地組織這些數據的建議,我可能不知道一些奇特的mysql技巧?查詢也需要很快,因爲最終可能會有很多查詢。除非我添加一個查看/下載計數器,否則它會比寫入方式多讀取數據......比我猜想寫入/更新會比讀取更多。
謝謝,我很樂意提供任何信息。
你已經接近回答你自己的問題了:「我認爲這樣做的唯一方法是創建第一張帶有基本信息的表格,第二張帶有字符id和game_id的表格。」這聽起來像是一種SQLish的做事方式。既然你想使用MySQL,你的解決方案就必須是這樣的。 List概念本身不起作用,因爲正如你所說的那樣,這不僅僅是SQL如何操作。 @neokio也提供了一些可能有所幫助的具體想法。 – DWright
@Dright您會建議哪些其他系統?你聽起來好像有更好的系統可以創建這個查詢。我知道一些NoSQL,但據我所知,這對我來說沒有多大用處,因爲WHERE條件可能不是恆定的,可能是一堆過濾器...... – MasterGberry
不太瞭解NOSQL - 我的觀點是,要在SQL中這樣做,你需要以一種適合SQL的方式來完成 - 通過多個表進行合理的建模一個有用的方法,(超出使用IN())。你提到的兩個存儲和關聯遊戲ID和字符ID的表比列表本身的概念更有前途,因爲它聽起來更像SQL。我沒有很好地闡述我的直覺。 。 。但是,當您談論多個表時,您似乎已經擁有了正確的SQL語言 - 這些可以加入,並且都是關於SQL中的連接! – DWright