环境是win2003(linux)+mysql+php1.现有近亿条记录数据,分成N个表进行存储;当然这N个表结构都一样,如何才能提高这N表的联合查询?表都建了索引;我在一个上百万的表上进行单表查询时...
环境是win2003(linux) + mysql + php
1. 现有近亿条记录数据,分成N个表进行存储;当然这N个表结构都一样,如何才能提高这N表的联合查询?表都建了索引;
我在一个上百万的表上进行单表查询时间几乎为0,但几个同样的表进行联合查询,结果处于假死状态,请问有什么机制可以
提高这N个表的联合查询速度?
2.如何请提高其它表 结合 这N几个表进行查询?我觉得同结构表结合查询就很慢,再结合其它不同结构表 会更麻烦些,请高
手们支招!
为便于理解我建了一个表结构出来:
CREATE TABLE `test_bj` (
`id` int(10) NOT NULL,
`username` char(12) default NULL,
`userpwd` char(16) default NULL,
`sex` int(1) default NULL,
`Position` char(10) default NULL,
`Remarks` char(150) default NULL,
`addtime` timestamp NULL default NULL on update CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `s_id_atm` (`id`,`addtime`),
KEY `s_all` (`id`,`username`,`userpwd`,`sex`,`Position`,`Remarks`,`addtime`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312;
字段分别为:id , username , usrepwd , sex , position, remarks, addtime (字段可根据优化需要再建或修改)
表名:test_bj,test_sh .... test_gz... test_n (假设每张有1千万记录)
每个表名 很想以地区单独分开(不想建分区表),这样方便查看和单独查询
还说明一点
select id,username,sex,addtime from
(
select id,username,sex,addtime from test_bj where username like '%张%' and sex=1
union all
select id,username,sex,addtime from test_sh where username like '%张%' and sex=1
union all
...
select id,username,sex,addtime from test_gz where username like '%张%' and sex=1
) order by addtime desc limit0,20
这种多表联合查询基本处于死机状态 , 这查询代码该如何写?
朋友们以上问题给我支个招吧!大家一起总结下,对后来者都是一个帮助!在此拜谢了!
不要拷贝、复制,最好给出实例代码和配置步骤
展开