V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
LetFoxRun
V2EX  ›  问与答

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

  •  
  •   LetFoxRun · 2014-01-10 15:37:47 +08:00 · 8117 次点击
    这是一个创建于 3770 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假如Mysql数据库里有100W行记录(假如数据库大小为2G),MyISAM引擎,都有哪些方法可以加快查询速度(咱们可以先只讨论查询功能)。

    比如分表,建索引等等。

    如果有1000W行呢?

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

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

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

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

    剩下的。。。就没了嗯。。。个人经验还是不足。。。
    andyhuax
        5
    andyhuax  
       2014-01-10 17:37:34 +08:00 via iPhone
    100万太少了吧,等1000万了再来考虑这个问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3749 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 00:09 · PVG 08:09 · LAX 17:09 · JFK 20:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.