现在有表的大约有1000w左右,而且以后会持续增加,而且是innodb表,由于对表进行一些全表查询的时候速度较慢,因此决定对表进行分区或者分表。举个例子:假如对1000w的数据进行count操作,需要10秒,而我把1000w的数据分到10张表中,单独对每张表进行查询只要1秒,如果我查完一张表再查另外一张表查完10张表的时间还是为10秒,而如果我同时对10张表进行查询,再处理10个count结果,那么时间最多只要1秒多一点,请问mysql有没有实现这个功能的方法或者各位有没有什么好的建议?(count操作只是举例而已)
我执行一条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,这不是一样的查询时间,没有任何区别。