成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

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

問題描述

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

我有一堆內(nèi)容,級(jí)別越高的用戶可見內(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',寫上可見的用戶等級(jí)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=*這樣的限制條件,而不能是<或>。所以想在此請(qǐng)教各路大神,有沒有過類似的需求?如何正確建立索引或分表?深表感謝!

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

即便我對(duì)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è)等級(jí)。例如內(nèi)容A的級(jí)別是3,那么發(fā)帖時(shí)要同時(shí)建立三個(gè)數(shù)據(jù)行:group=1,tid=Agroup=2,tid=Agroup=3,tid=A這樣在內(nèi)容讀取時(shí)直接請(qǐng)求WHERE group=*都可以讀出符合條件內(nèi)容。但這種方法需要添加大量的關(guān)聯(lián)數(shù)據(jù),甚至造成重復(fù),有沒有其他解決途徑呢?

問題解答

回答1:

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

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

如果group >=3的組,在程序中動(dòng)態(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 會(huì)智能的放棄索引,選擇全表查詢。

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

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

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

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

回答3:

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

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

對(duì)于聯(lián)合索引,從左往右依次進(jìn)行數(shù)據(jù)的篩選,所以如果第一個(gè)篩選條件針對(duì)了大于或者小于的話,第二個(gè)篩選條件由于在整個(gè)可選區(qū)域內(nèi)沒有確切的索引范圍,所以會(huì)將第一個(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)的對(duì)應(yīng)表,這樣可以快速的從某一字段某個(gè)值定位到某一行,省卻了跑整個(gè)表去找對(duì)應(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ù)你描述的場(chǎng)景,只要tid的值不是太大(幾千的數(shù)量級(jí)),針對(duì)tid建立索引就可以了。如果還擔(dān)心tid條件過濾后的數(shù)據(jù)量大,可以創(chuàng)建tid,group的組合索引。

回答5:

首先非常感謝各位對(duì)我問題的關(guān)注和回答!!問題解決之后針對(duì)boxsnake的建議有一個(gè)思考,在這里發(fā)一下。group_tid這種索引方式除了解決讀取之外還能解決分頁問題,例如我每頁文章數(shù)量是10,用戶級(jí)別為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之前又必須對(duì)tid進(jìn)行限定,所以就沒法使用了。

相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
喷白浆一区二区| 欧美在线高清| 91精品国产高清一区二区三区蜜臀 | 欧美一区不卡| 亚洲chinese男男1069| 久久精品水蜜桃av综合天堂| 91久久精品一区二区三| 国产综合婷婷| 国产精品 日产精品 欧美精品| 亚洲美女偷拍久久| 精品99999| 在线观看视频欧美| 亚洲成人自拍视频| 成人免费毛片app| 婷婷一区二区三区| 国产女同性恋一区二区| 3atv在线一区二区三区| 亚洲欧美日韩精品一区二区 | 国产免费成人在线视频| 欧美午夜宅男影院| 日韩亚洲在线| www.欧美日韩| 久久 天天综合| 一区二区三区免费在线观看| 久久中文娱乐网| 欧美日韩国产成人在线免费| 国产精品毛片| 97久久精品人人做人人爽50路| 欧美a级理论片| 一区二区三区免费| 久久久激情视频| 欧美精品粉嫩高潮一区二区| 欧美亚洲一区二区三区| 欧美午夜国产| 成人激情免费视频| 久久精品国产99国产精品| 亚洲欧美日韩中文字幕一区二区三区| 精品国产凹凸成av人导航| 欧美日韩精品一区视频| 欧美一级一区| 亚洲国产欧美日韩| 欧美激情91| 国产成人精品一区二| 青青草原综合久久大伊人精品优势 | 国内精品免费在线观看| 亚洲第一狼人社区| 亚洲精品菠萝久久久久久久| 国产日韩欧美高清| 欧美一区二区三区四区高清| 欧美性淫爽ww久久久久无| 久久久久高清| 国产伦精品一区二区三区| 国产一区二区三区四区三区四 | 在线观看视频一区二区欧美日韩| 最新亚洲一区| 欧美日韩ab| 91在线视频免费观看| 成人午夜视频在线观看| 国内久久婷婷综合| 久久精品国内一区二区三区| 日日摸夜夜添夜夜添精品视频| 亚洲综合一区在线| 亚洲视频免费观看| 综合色中文字幕| 中文字幕亚洲一区二区av在线| 久久五月婷婷丁香社区| 欧美精品一区二区三区四区| 69久久夜色精品国产69蝌蚪网| 欧美日韩一级黄| 91福利社在线观看| 久久欧美肥婆一二区| 国产偷国产偷亚洲高清97cao| 亚洲国产三级| 亚洲激情啪啪| 亚洲黄色影院| 亚洲精品一区二| 99国产精品私拍| 国产精品一区二区三区观看| 国产精品久久久对白| 99热免费精品| 国产乱码精品一区二区三区不卡| 一本久道久久久| 国产自产在线视频一区| 欧美成人一品| 欧美日韩一区二区三区四区在线观看| 欧美精品播放| 欧美日韩网站| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲高清网站| 在线视频欧美一区| 国产精品久久久久毛片大屁完整版 | 久久只精品国产| 精品国产免费一区二区三区四区| 欧美精品一区二区三区高清aⅴ | 国产欧美精品国产国产专区| 国产日韩欧美一区二区三区综合| 国产日韩亚洲欧美综合| 国产片一区二区三区| 国产精品麻豆视频| 亚洲人成人一区二区在线观看| 一区二区欧美精品| 亚洲电影中文字幕在线观看| 亚洲h动漫在线| 麻豆精品久久精品色综合| 精品一区二区三区久久| 国产成人一级电影| 99国产精品久久久久久久久久 | 日本一区二区三级电影在线观看| 国产亚洲欧美一区在线观看| 国产精品黄色在线观看| 亚洲欧美另类小说视频| 五月天亚洲精品| 韩国v欧美v日本v亚洲v| 国产.欧美.日韩| 欧美福利一区二区三区| 在线观看视频免费一区二区三区| 国产精品区免费视频| 欧美在线观看一区二区| 日韩欧美国产不卡| 国产欧美日韩中文久久| 亚洲精品高清在线观看| 免费高清在线一区| 成人福利在线看| 亚洲黄色三级| 久久精品国产第一区二区三区最新章节 | 欧美xxxxxxxx| 国产亚洲精品中文字幕| 国产精品成人网| 午夜精品123| 久久精品国产在热久久| 成人av动漫网站| 亚洲国产日本| 久久久国产精品一区二区中文| 欧美日韩一卡二卡三卡| 久久久亚洲精品石原莉奈| 亚洲日本在线天堂| 美女被吸乳得到大胸91| 97精品久久久午夜一区二区三区| 亚洲大黄网站| 欧美艳星brazzers| 久久免费看少妇高潮| 亚洲免费三区一区二区| 久久国产精品区| 91丨porny丨最新| 国产精品久久亚洲7777| 91精品综合久久久久久| 国产精品的网站| 麻豆精品国产传媒mv男同| 欧美在线网址| 久久天天综合| 久久这里只精品最新地址| 亚洲综合一区二区| 国产一区二区三区在线观看免费视频| 欧美精品观看| 在线免费观看日韩欧美| 久久精品欧美日韩精品| 亚洲一二三四区不卡| 国产成人精品aa毛片| 亚洲区欧美区| 欧美午夜寂寞影院| 国产精品毛片大码女人| 蜜桃av一区二区| 午夜国产精品视频| 色婷婷久久久亚洲一区二区三区 | 亚洲精品孕妇| 欧美欧美欧美欧美| 中文字幕精品在线不卡| 蜜桃精品视频在线| 欧美成人午夜| 欧美日韩一区二区三区免费看| 国产精品美女久久久久久久久久久| 亚洲123区在线观看| 不卡视频在线观看| 一本一道久久a久久精品综合蜜臀| 亚洲精品一区在线观看| 亚洲1区2区3区视频| 成人午夜视频福利| 男女av一区三区二区色多| 亚洲精品在线免费观看视频| 天天射综合影视| 97久久人人超碰| 91成人国产精品| 国产精品毛片久久久久久| 久久99精品视频| 一区二区三区三区在线| 欧美一卡二卡三卡| 亚洲第一av色| 欧美日韩精品免费观看视一区二区| 欧美午夜片在线看| 国产精品高潮久久久久无| 激情成人午夜视频| 国产精品久久久久久模特| 国产日韩欧美精品一区| 国产一区二区视频在线| 午夜在线视频一区二区区别| 久久综合999| 国产一区二区中文字幕| 亚洲男人影院| 国产女人水真多18毛片18精品视频| 美女网站色91|