为什么加数据库索引搜索快? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mlgm2020
V2EX    问与答

为什么加数据库索引搜索快?

  •  
  •   mlgm2020 2020-05-26 14:00:10 +08:00 1842 次点击
    这是一个创建于 2011 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚在网上看到:

    [首先:先假设有一张表,表的数据有 10W 条数据,其中有一条数据是 nickname='css',如果要拿这条数据的话需要些的 sql 是 SELECT * FROM award WHERE nickname = 'css'
    一般情况下,在没有建立索引的时候,mysql 需要扫描全表及扫描 10W 条数据找这条数据,如果我在 nickname 上建立索引,那么 mysql 只需要扫描一行数据及为我们找到这条 nickname='css'的数据,是不是感觉性能提升了好多咧....]

    没理解。。WHERE nickname = 'css' 不是本来就搜索 nickname 这一列吗, 不知道加上索引有什么变化
    6 条回复    2020-05-26 15:54:56 +08:00
    cvl
        1
    cvl  
       2020-05-26 14:49:39 +08:00
    想一下一本书,目录得作用
    lkyier
        2
    lkyier  
       2020-05-26 15:24:17 +08:00
    数据库底层存储的大多是 tuple (元组),对于 where 子句,需要遍历每一个元组来寻找数据,而建立索引就是为了减少遍历带来的性能损失。你可以搜下这两篇文章:
    数据库内核杂谈(二):存储“演化论”,
    数据库内核杂谈(三):索引优化,
    opengps
        3
    opengps  
       2020-05-26 15:43:07 +08:00
    索引这个词,想想书的索引就很明确了,书本的索引是对标题进行排序,找的时候可以根据排序规律跳跃快速查找

    数据库里也是一样,表的索引就是把某些列按照循序排好,单独找个位置存下,每次更新或者新增时候同时要维护下存储的索引,然后查询时候优先从看看查询条件里,有没有能用到的索引列,然后就“跳跃过去快速找数据”
    luckyrayyy
        4
    luckyrayyy  
       2020-05-26 15:47:50 +08:00   1
    不加索引:nickname 就是乱序的,字母 a 后面可能是 z,下一个可能是 d 。你想找 css 得遍历一遍。
    加了索引:nickname 是有序的,a 后面 b,b 后面 c,找到 c 再找下一级的 s,岂不是快得多?
    daozhihun
        5
    daozhihun  
       2020-05-26 15:51:19 +08:00
    mysql 是前缀索引,用 b+数存储,lz 该补补基础了
    zxCoder
        6
    zxCoder  
       2020-05-26 15:54:56 +08:00   1
    有索引你就直接跳到 css,没索引你就一行一行看是不是 css
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5211 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 08:08 PVG 16:08 LAX 00:08 JFK 03:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86