十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
一条语句没法实现的...
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的红岗网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
create table table2 select * from table1 order by id limit 1,100
create table table3 select * from table1 order by id limit 100,100
create table table4 select * from table1 order by id limit 200,100
呵呵,这个还不好办么,你写的语句类似这个吧 我用C++语法给你写吧,希望能给你点提示
int a;
a=x_id%9
CString tbl_name
tbl_name="A_"+a;
CString Sql;
Sql="select * from" + tblname;
1、做分区表,(哪个字段分区很重要,分错会影响性能)。
2、拆表,
可以将历史数据放到 其他表中,例如 abc表中,2013年的数据,拆到 abc_2013表中,2014年的数据拆到abc_2014表中。
SELECT MAX(login_time) AS login_time,user_id
FROM(
SELECT MAX(login_time) AS login_time,user_id FROM user_login_record GROUP BY user_id
UNION
SELECT MAX(login_time) AS login_time,user_id FROM user_login_record_20170101 GROUP BY user_id
UNION
SELECT MAX(login_time) AS login_time,user_id FROM user_login_record_20180101 GROUP BY user_id
)TMP GROUP BY user_id
觉得你还是应该用php去写。非要用mysql本身的话给个参考:
mysql select * from a;
+------+--------+------+----+
| id | name | num1 | bb |
+------+--------+------+----+
| 1 | a, | 2 | 3 |
| 2 | b,c, | 2 | 4 |
| 3 | d,e,f, | 2 | 5 |
+------+--------+------+----+
3 rows in set (0.00 sec)
mysql delimiter //
mysql create procedure `strsplit1`(in str3 varchar(2))
- begin
- declare i int(10);
- declare j int(10);
- declare k int(10);
- declare str1 varchar(100);
- declare str4 varchar(1000);
- declare str5 varchar(100);
-
- select count(*) into i from a;
- if i!=0 then
- drop table if exists tmp_table1;
- CREATE TEMPORARY TABLE tmp_table1 like a;
- end if;
-
- set j=0;
- while ji do
- select id,name into str1,str4 from a limit j,1;
- select instr(str4,str3) into k from dual;
- if k=0 then
- insert into tmp_table1(id,name) values(str1,str4);
- end if;
- while k!=0 do
- select substring_index(str4,str3,1) into str5 from dual;
- insert into tmp_table1(id,name) values(str1,str5);
- select mid(str4,k+1) into str4 from dual;
- select instr(str4,str3) into k from dual;
- end while;
- set j=j+1;
- end while;
-
- select * from tmp_table1;
- end
- //
Query OK, 0 rows affected (0.00 sec)
mysql delimiter ;
最后结果:
mysql call strsplit1(',');
+------+------+------+----+
| id | name | num1 | bb |
+------+------+------+----+
| 1 | a | NULL | 1 |
| 2 | b | NULL | 2 |
| 2 | c | NULL | 3 |
| 3 | d | NULL | 4 |
| 3 | e | NULL | 5 |
| 3 | f | NULL | 6 |
+------+------+------+----+
6 rows in set (0.25 sec)
Query OK, 0 rows affected (0.30 sec)
三百万左右的数据,说大不大,说小也不小了。
这个数据量,做好索引的话,暂时还不需要拆表存储。
不过考虑以后还会有大量数据存入的话,你可以做一下拆表计划了。