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

2014-01-10 15:37:47 +08:00
 LetFoxRun
假如Mysql数据库里有100W行记录(假如数据库大小为2G),MyISAM引擎,都有哪些方法可以加快查询速度(咱们可以先只讨论查询功能)。

比如分表,建索引等等。

如果有1000W行呢?

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

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

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

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

剩下的。。。就没了嗯。。。个人经验还是不足。。。
andyhuax
2014-01-10 17:37:34 +08:00
100万太少了吧,等1000万了再来考虑这个问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/96450

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX