當一張表的數據達到幾千萬時,你查詢一次所花的時間會變多,若是有聯合查詢的話,我想有可能會死在那兒了。分表的目的就在於此,減少數據庫的負擔,縮短查詢時間。mysql
mysql> DELIMITER $$sql
mysql> CREATE procedure wx_user_fans()數據庫
-> BEGINtable
-> DECLARE `@i` int(11);test
-> DECLARE `@sqlstr` varchar(2560);file
-> SET `@i`=0;call
-> WHILE `@i` < 10 DO數據
-> SET @sqlstr = CONCAT(查詢
-> "CREATE TABLE wx_user_fans_",`@i`,tab
-> "( `id` int(11) NOT NULL AUTO_INCREMENT, `userid` int(11) DEFAULT '0', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 "
-> );
-> prepare stmt from @sqlstr;
-> execute stmt;
->
-> SET `@i` = `@i` + 1;
-> END WHILE;
-> end $$
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
mysql> call wx_user_fans();
Query OK, 0 rows affected (0.13 sec)
mysql> drop procedure wx_user_fans;
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| admin |
| files |
| mytest |
| tb_orderlist |
| wx_user_fans_0 |
| wx_user_fans_1 |
| wx_user_fans_2 |
| wx_user_fans_3 |
| wx_user_fans_4 |
| wx_user_fans_5 |
| wx_user_fans_6 |
| wx_user_fans_7 |
| wx_user_fans_8 |
| wx_user_fans_9 |
| zcctest |
+----------------+
15 rows in set (0.00 sec)