V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
LetFoxRun
V2EX  ›  问与答

假如mysql数据库单表有100W行记录,都有哪些方式加快查询速度?

  •  
  •   LetFoxRun · Jan 10, 2014 · 8597 views
    This topic created in 4503 days ago, the information mentioned may be changed or developed.
    假如Mysql数据库里有100W行记录(假如数据库大小为2G),MyISAM引擎,都有哪些方法可以加快查询速度(咱们可以先只讨论查询功能)。

    比如分表,建索引等等。

    如果有1000W行呢?

    没实践过,只是想从理论上知道都有哪些方法可以达到。谢谢。
    5 replies    1970-01-01 08:00:00 +08:00
    mahone3297
        1
    mahone3297  
       Jan 10, 2014
    100w不需要分表。。。
    maddot
        2
    maddot  
       Jan 10, 2014
    这需要根据实际的场景来选择方法的,脱离场景谈这个没多大意义
    maddot
        3
    maddot  
       Jan 10, 2014
    理论的话GOOGLE一下你就看不完了
    raincious
        4
    raincious  
       Jan 10, 2014   ❤️ 1
    100W数据量不算特别巨大。

    我测试的时候一般拿5GB的数据,大约500W行记录。这样的数据量下,如果遇到了慢的情况,那么几乎可以确认要么是索引不对,要么就是JOIN了不该JOIN的表。

    另外,针对数据量较大的情况,应该尽量减少WHERE的条件。曾经有经验做登陆的时候用username = XXX AND password = XXX,结果300W数据的时候用了16秒才查出来,后来改成了username = XXX,然后取出密码比对。这样优化之后几乎每次都能在10ms内得到结果了。

    然后就是优先查询primary,其次unique,然后才是索引,这样速度貌似也更快嗯。

    剩下的。。。就没了嗯。。。个人经验还是不足。。。
    andyhuax
        5
    andyhuax  
       Jan 10, 2014 via iPhone
    100万太少了吧,等1000万了再来考虑这个问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1540 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 16:34 · PVG 00:34 · LAX 09:34 · JFK 12:34
    ♥ Do have faith in what you're doing.