(1 條消息)MySQL分表 不合併表查詢 要如何操作?
02-19
謝謝各位大俠,女俠幫忙。
剛接觸mysql分表碰到一些問題,實在是不懂,想知道這些問題的解決辦法,也許有更好的辦法,也麻煩在幫助我的同時告知。目前有10張表 article0,article1......article9,表結構 id, uid ,categroyId acticleName, content,addTime
id 通過一張自增id來取得 取模插入對應的表uid 用戶id categroyId 分類idacticleName 文章id
content 內容addTime 添加時間 查詢的時候是合併這幾個表 查詢了,感覺這樣不好,合併表了 還有必要分表嗎如果不使用合併查詢1 需要查詢 uid=100的所有文章要怎麼寫
2 需要按需查詢以往十條文章學慣用了 謝謝大家ps 分表規則可能有問題,想法是均勻的插入各表 這樣是不是不好
謝邀……
首先列出你對錶查詢的需求,然後針對業務需求進行分表,不能單純的按照某個分表方案(文章id取模、按照時間分表等等)。
比如:如果你的需求集中在查詢某個用戶的文章信息,那可以用uid作為分表的依據。如果其他需求只有一項是讀取最新10條,那你可以維護一張最新文章表(只存儲最近的10條或者100條文章,有變化就更新)另外你的文章數量真的已經多到必須分表了嗎?如果數量沒有達到一個特別大的數量級,可以嘗試垂直切分,將經常讀取的欄位放在一張表,不經常讀取的欄位拆出來放在另外的一張表裡,減少單表的大小,建立好合適的索引,妥妥的查詢起來沒有問題的……最後就是表優化完畢後,前台讀取的時候,是不是可以做些緩存或者將文件靜態化等等……以上……
我來晚了,基本上就是 @王金亮說的那樣了。再補全也是一個原理。懶得說了,希望金亮能多補一些?我就什麼都不說了,摺疊我吧,我頂金亮一票。
可以使用merge引擎加myisam引擎實現分表。
前面已有很好的回答,補充一下:如果覺得各種條件查詢都會用到,按時間分表很可能是最好的選擇。
推薦閱讀:
※R訪問資料庫管理系統(通過RODBC包和RMySQL包兩種方式)
※為什麼php在向mysql提交數據時變數外要用單引號?
※memcached plugin(handlersocket),Memcached的一點看法
※MySQL訓練——SUM and COUNT@sqlzoo.net
※MySQL 8.0.0 發布