initialdp
V2EX  ›  问与答

请教问题: 关于数据库的主键和查询

  •  
  •   initialdp · Sep 2, 2018 · 3197 views
    This topic created in 2992 days ago, the information mentioned may be changed or developed.
    对数据库了解不多,有几个问题想咨询一下 V 友:
    ( 1 ) 如果某个 table 的 primary key 是( A, B ),即由两个个字段组成。如果查询时仅仅查询其中一个字段,比如( where A=xxx ), 这种情况下,为优化查询,还需要单独对字段 A 做索引吗?

    ( 2 )如果*分别*对 C 和 D 做了索引,某查询需要同时查询 C 和 D,比如( where C=xxx and D=yyy ),此时还需要对 C 和 D 的组合做索引吗?比如( index (C, D))?

    谢谢!
    dream7758522
    dream7758522
    Sep 2, 2018 via Android❤️1
    1
    第一个不知道,第二个需要。c 和 d 分别建立索引,c.d 进行组合查询,数据库会随机用 c 或者 d 的索引,不会两个索引一起用。因此组合查询需要建立组合索引
    initialdp
    initialdp
    OP
    Sep 2, 2018
    2
    @dream7758522 谢谢!
    zjuhwc
    zjuhwc
    Sep 2, 2018 via iPhone❤️2
    3
    第一个不需要,索引是前缀索引,联合索引 ( A, B )相当于索引 A 和索引 ( A+B ),查 a 无需新建,查 B 需要
    initialdp
    initialdp
    OP
    Sep 2, 2018
    4
    @zjuhwc 谢谢! 那如果联合索引是( A, B, C ),是否就相当于索引 A 和索引( A+B+C )? 此时如果单独查询 B 或者 C,都需要另外建索引优化?
    sunnyadamm
    sunnyadamm
    Sep 2, 2018❤️1
    5
    第一个不要,第二个要
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4674 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 06:21 · PVG 14:21 · LAX 22:21 · JFK 01:21
    ♥ Do have faith in what you're doing.