日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

求教一個(gè)mysql建表分組索引問題

瀏覽:265日期:2022-06-10 18:20:28

問題描述

我在做一個(gè)網(wǎng)站程序,大致要求效果如下。用戶分為1-5這五個(gè)級別,數(shù)字越大權(quán)限越高。

我有一堆內(nèi)容,級別越高的用戶可見內(nèi)容越多。例如有內(nèi)容:A、B、C、D、E,用戶組1的可見:A用戶組2的可見:A、B…………用戶組5的可見:A、B、C、D、E如果要實(shí)現(xiàn)這種功能,該如何建立數(shù)據(jù)庫索引比較好呢?

之前有朋友跟我說在內(nèi)容(topic)表加上一列'group',寫上可見的用戶等級1-5,然后建立group_tid的聯(lián)合索引。然后查詢tid<100周圍文章(例如當(dāng)前用戶組為3)時(shí)的語句就是:SELECT * FROM topic WHERE group>=3 AND tid<100 LIMIT 10;可實(shí)際發(fā)現(xiàn)這種索引是先將group>3的所有數(shù)據(jù)讀出來,再進(jìn)行選擇查詢。假如有100萬條數(shù)據(jù),有50萬個(gè)group>3,該語句執(zhí)行就要從50萬條種篩選,效率極低。

看起來單列的索引只適用于group=*這樣的限制條件,而不能是<或>。所以想在此請教各路大神,有沒有過類似的需求?如何正確建立索引或分表?深表感謝!

補(bǔ)充1:其實(shí)把問題改變一下,就是如何在mysql兩個(gè)索引中使用<或>限定。這是個(gè)邏輯問題,目前的group_tid索引建立后類似于下圖:求教一個(gè)mysql建表分組索引問題

即便我對group進(jìn)行了范圍限制,后面的tid還是在group的基礎(chǔ)上按順序排列的。如果我想知道group>1且tid<6的這種情況,不得不先把group2/3全部讀出再篩選。看起來只有重新規(guī)劃表結(jié)構(gòu),各位有沒有類似經(jīng)驗(yàn)?

補(bǔ)充2:剛才收到了熱心朋友的幫助回答,說這種情況他曾經(jīng)遇到過。解決的方法是修改發(fā)布機(jī)制,將符合條件的帖子發(fā)布至各個(gè)等級。例如內(nèi)容A的級別是3,那么發(fā)帖時(shí)要同時(shí)建立三個(gè)數(shù)據(jù)行:group=1,tid=Agroup=2,tid=Agroup=3,tid=A這樣在內(nèi)容讀取時(shí)直接請求WHERE group=*都可以讀出符合條件內(nèi)容。但這種方法需要添加大量的關(guān)聯(lián)數(shù)據(jù),甚至造成重復(fù),有沒有其他解決途徑呢?

問題解答

回答1:

其實(shí)你的思路已經(jīng)很對了。

tid上建立索引,根據(jù)group分表。

如果group >=3的組,在程序中動態(tài)組合sql如下:

select * from group3 where tid < 100union all select * from group4 where tid < 100union all select * from group5 where tid < 100

以上索引生效,邏輯可用。

回答2:

首先說明一下,在 Innodb 中,索引生不生效跟你使用 < 或 > 沒有必然關(guān)系。也不是說用 = 就一定能用上索引。當(dāng)全表查的性能要高于索引檢索查詢時(shí),MySQL 會智能的放棄索引,選擇全表查詢。

如圖:求教一個(gè)mysql建表分組索引問題

回到你的問題,如果某個(gè)索引,如 tid<100 檢索出的范圍相對較小時(shí),索引是能夠用上的。

如果這兩個(gè)索引的結(jié)果集都很大的話,是否考慮添加其他過濾條件,比如根據(jù)創(chuàng)建時(shí)間只查近一個(gè)月的內(nèi)容。

分頁問題也可以通過主鍵ID來再次過濾。

回答3:

首先,需要明白以下幾點(diǎn):

對于一個(gè)表的查詢,每次最多只使用一個(gè)索引

對于聯(lián)合索引,從左往右依次進(jìn)行數(shù)據(jù)的篩選,所以如果第一個(gè)篩選條件針對了大于或者小于的話,第二個(gè)篩選條件由于在整個(gè)可選區(qū)域內(nèi)沒有確切的索引范圍,所以會將第一個(gè)篩選條件篩除來的數(shù)據(jù)都跑一遍

B-Tree索引的結(jié)構(gòu)類似于樹形結(jié)構(gòu),見下圖,聯(lián)合索引從左往右的檢索,起始就是這個(gè)結(jié)構(gòu)從上往下查找分支的過程

索引的機(jī)制,簡單說來就是創(chuàng)建一個(gè)值到數(shù)據(jù)項(xiàng)的對應(yīng)表,這樣可以快速的從某一字段某個(gè)值定位到某一行,省卻了跑整個(gè)表去找對應(yīng)行的操作,所以比較快

B-Tree索引的結(jié)構(gòu):求教一個(gè)mysql建表分組索引問題

然后回到你的問題上,如果要大幅度提高效率,那么聯(lián)合索引的第一步就需要大幅度減少可以用于后續(xù)篩選的數(shù)據(jù)量,所以如果你要查tid < 100的話,先用tid篩選才能夠大幅度減少后續(xù)的B-Tree索引分支,所以如果要用聯(lián)合索引,則應(yīng)該是(tid, group)。

回答4:

group條件的過濾性很差,單獨(dú)建立索引意義不大。

根據(jù)你描述的場景,只要tid的值不是太大(幾千的數(shù)量級),針對tid建立索引就可以了。如果還擔(dān)心tid條件過濾后的數(shù)據(jù)量大,可以創(chuàng)建tid,group的組合索引。

回答5:

首先非常感謝各位對我問題的關(guān)注和回答!!問題解決之后針對boxsnake的建議有一個(gè)思考,在這里發(fā)一下。group_tid這種索引方式除了解決讀取之外還能解決分頁問題,例如我每頁文章數(shù)量是10,用戶級別為3,那么讀取時(shí)分別從group1、group2、group3中,按范圍tid<100各取10篇,即便某group中沒有符合條件的結(jié)果,幾項(xiàng)加起來也可以覆蓋全。

但如果用tid_group這種索引方式來讀取,如果需要group<=3的情況,我不知道該取多少篇文章。比方說取10篇,tid90-tid99,如果他們的group都是4,那么就無法取出符合條件的數(shù)值。而tid_group在限定group之前又必須對tid進(jìn)行限定,所以就沒法使用了。

相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
婷婷激情一区| 欧美视频精品全部免费观看| 欧美私人啪啪vps| 免费国产亚洲视频| 奶水喷射视频一区| 午夜一级久久| 欧美日韩国产在线一区| 欧美日韩国产欧| 亚洲欧美日韩视频二区| 亚洲影视一区二区三区| 日本中文字幕一区二区视频| 欧美影院精品| 国产激情综合| 国产一区一一区高清不卡| 国产suv精品一区| 97精品在线| 亚洲一级特黄| 蜜桃av一区二区三区电影| 91成人精品观看| 久久久久亚洲精品中文字幕| 精品一区二区三区中文字幕视频| 狂野欧美性猛交xxxx| 国产一区二区三区不卡视频网站 | 精品美女视频 | 狠狠躁少妇一区二区三区| 91亚洲国产| 91国语精品自产拍| 蜜桃一区二区三区在线观看| 日韩不卡一二三区| 精品一区二区三区的国产在线观看 | 精品国产第一福利网站| 久久亚洲精品中文字幕蜜潮电影| 国产亚洲激情| 日韩影片在线观看| 国产精品扒开腿做爽爽爽软件| 高清一区二区| 午夜久久美女| 青青草91久久久久久久久| 久久精品三级| 日韩中文视频| 亚洲在线免费| 国产精品中文字幕制服诱惑| 色黄视频在线观看| 蜜臀精品一区二区三区在线观看| 国产探花在线精品一区二区| 日韩电影免费网址| 中文字幕日本一区| 福利精品一区| 亚洲欧美久久久| 国产精品国产三级在线观看| 亚洲婷婷免费| 国产无遮挡裸体免费久久| 亚洲a一区二区三区| 日韩avvvv在线播放| 日韩精品不卡一区二区| 亚洲精品激情| 日本在线精品| 国产麻豆精品| 国产一级一区二区| 精品一区二区男人吃奶| 久久电影一区| 日韩成人精品一区| 中文字幕日韩亚洲| 日韩欧美中文| 亚洲精品免费观看| 精品国模一区二区三区| 热久久久久久| 亚洲一区免费| 裤袜国产欧美精品一区| 亚洲精品看片| 香蕉久久精品| 麻豆高清免费国产一区| 免费不卡在线观看| 国产一区二区亚洲| 欧美日韩国产综合网| 麻豆成人综合网| 宅男噜噜噜66国产日韩在线观看| 麻豆久久久久久久| 精品欧美激情在线观看| 国产精品一区二区av日韩在线| 午夜久久影院| 精品不卡一区| 日韩一区二区三区高清在线观看| 国产麻豆久久| 美女视频黄久久| 亚洲一区中文| 成人免费电影网址| 麻豆传媒一区二区三区| 亚洲九九精品| 在线国产一区| 夜鲁夜鲁夜鲁视频在线播放| 国产精品日本一区二区不卡视频 | 国内在线观看一区二区三区| 日韩在线电影| 伊人成人在线视频| 啪啪国产精品| 精品国产一区二区三区噜噜噜| 亚州av一区| 日韩一区二区久久| 四虎884aa成人精品最新| 国产在线一区不卡| 久久国产精品免费一区二区三区| 亚洲精品影视| 丝袜美腿成人在线| 五月天久久网站| 精品捆绑调教一区二区三区 | 亚州av乱码久久精品蜜桃| 国产尤物精品| 婷婷综合在线| 久久国产免费看| 水野朝阳av一区二区三区| 999国产精品视频| 福利精品一区| 福利一区和二区| 国产美女亚洲精品7777| 日本成人在线网站| 日韩视频一二区| 蜜桃一区二区三区在线| 水蜜桃久久夜色精品一区的特点| 亚洲欧美网站| 韩日一区二区三区| 自拍日韩欧美| 国产一区91| 国产精品外国| 宅男噜噜噜66国产日韩在线观看| 99国产精品私拍| 亚洲欧美日韩专区| 免费在线观看成人| 在线国产日韩| 日韩二区三区四区| 欧美日韩1区2区3区| 国产探花一区| 88久久精品| 国产精品第十页| 久久毛片亚洲| 三上悠亚国产精品一区二区三区| 久久激情中文| 欧美成人综合| 9国产精品视频| 午夜一区在线| 亚洲美女91| 麻豆视频久久| 日韩成人亚洲| 一区在线免费观看| 亚洲精品大片| 久久中文精品| 日韩精品首页| 亚洲欧美成人综合| 91九色综合| 精品国产乱码久久久久久1区2匹| 激情不卡一区二区三区视频在线| 九九精品调教| 男人的天堂久久精品| 国产视频一区二区在线播放| 福利一区在线| 欧美特黄一区| 日韩av中文字幕一区二区三区| 精品亚洲成人| 欧美特黄一级大片| 一级欧美视频| 久久久久观看| 欧美a级片一区| 日韩国产在线观看一区| 成人日韩av| 亚洲欧美视频| 日韩av一级片| 日本不良网站在线观看| 国产视频一区欧美| 国产免费av国片精品草莓男男 | 国产精品mm| 日韩精品1区| 色狠狠一区二区三区| 老司机精品视频网| 精品一区在线| 日韩精品a在线观看91| 国产伦久视频在线观看| 亚洲综合精品| 国产日本亚洲| 免费污视频在线一区| 日本一区福利在线| 日韩中文在线电影| 青草国产精品久久久久久| 欧美三区四区| 日韩激情综合| 91精品蜜臀一区二区三区在线| 无码日韩精品一区二区免费| 精品亚洲成人| 蜜臀久久久99精品久久久久久| 精品久久免费| 亚洲人成网77777色在线播放| 国产拍在线视频| 日韩激情精品| 国产99久久| 国产伦理一区| 欧美日韩国产欧| 韩日一区二区| 午夜久久av| 久久一区二区三区喷水| 国产精选久久| 蜜臀久久99精品久久久久久9|