现在有表的大约有1000w左右,而且以后会持续增加,而且是innodb表,由于对表进行一些全表查询的时候速度较慢,因此决定对表进行分区或者分表。举个例子:假如对1000w的数据进行count操作,需要10秒,而我把1000w的数据分到10张表中,单独对每张表进行查询只要1秒,如果我查完一张表再查另外一张表查完10张表的时间还是为10秒,而如果我同时对10张表进行查询,再处理10个count结果,那么时间最多只要1秒多一点,请问mysql有没有实现这个功能的方法或者各位有没有什么好的建议?(count操作只是举例而已)
解决方案 »
- about sql problem ,need help
- Delphi+MySQL执行查询报Commands out of sync; you can't run this command now
- 在线急等,如何从数据库中直接取出最小值?
- 关于drop 索引的问题~~~?
- 视图的工作原理和效率问题
- MYSQL启动问题
- libsqlpg.so无法加载的问题
- 请教:用datasource连接MYSQL是怎么设置中文编码?
- mysql 怎样建库
- 小弟今天刚学msSql,当然以前对sql有所了解.遇到以下几个问题请各位大虾解答~!
- 使用CURRENT_TIMESTAMP作默认值的时候怎么update时不更改时间
- 创建表分区的问题
我执行一条Sql语句操作1000w条数据要10秒,我把表分成10张,每张100W,这条语句单独查一张表只要1秒,我使用10个线程分别对各个表进行查询,此时只会花费1秒,查询结果再进行一次统计时间肯定会小于10秒的,我的问题就是,mysql有没有这样的实现呢
具体的分析,需要看你的表结构及具体的查询语句。 但仅以你目前的例子看。select count(*) from tableX
肯定是比10个分别的 select count(*) from table1, select count(*) from table2, 要快。
你的思路一直停留在单线程处理count方法上面,那么时间长度就是10次count时间的和,这样做完全没有必要进行分表操作,而我是用多线程进行count操作,意味着时长就是10次count操作中的最长的拿一次count的时间+进行逻辑操作sum所有count的时间
每个表的查询需1s,总共查询10s,这不是一样的查询时间,没有任何区别。