(1 條消息)MySQL分表 不合併表查詢 要如何操作?

謝謝各位大俠,女俠幫忙。

剛接觸mysql分表碰到一些問題,實在是不懂,想知道這些問題的解決辦法,也許有更好的辦法,也麻煩在幫助我的同時告知。

目前有10張表 article0,article1......article9,

表結構 id, uid ,categroyId acticleName, content,addTime

id 通過一張自增id來取得 取模插入對應的表

uid 用戶id

categroyId 分類id

acticleName 文章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 發布

TAG:MySQL | PHP學習 | 分表 |