表table1,字段如下: id type 注:id和type都带有索引 表table2,字段如下: id type content 注:id带索引 假如table1中的id、type等于table2中的id、type 那么查询的时候我们可以如下: select id from table1 where type 条件 进行整理将查询出的id集合组成$s = '1, 2, 3, 4, 5' 然后再 select * from table2 where id in ($s) 注:以上方法数据量大了自然能够体现出来
数据表的忧化,索引等等。
mysql服务器硬件。
++数据库数据达到100多万的时候,mysql交表就会死机,连接不上。
方法一:
加一个字段,发卡日期(或者加上年,月两字段),只记录发卡的日期,再将日期加索引,查某一时间段,先查日期,再查时间应该会快很多吧。方法二:
把表按某时段拆分,比如一个月一张表,查的时候先按日期确定查哪些表,再UNION起来就好了本人处理过大数据量是按方法二做的。
表分区 (Partition)
索引字段放到一个表里,不是索引的放到另一表中,然后先查询索引表中的索引,然后做成'1, 2, 3, 4'这样的字符串,然后用select的in来查询另一表中的内容(另一个表中的某个字段也要是有索引)
id type
注:id和type都带有索引
表table2,字段如下:
id type content
注:id带索引
假如table1中的id、type等于table2中的id、type
那么查询的时候我们可以如下:
select id from table1 where type 条件
进行整理将查询出的id集合组成$s = '1, 2, 3, 4, 5'
然后再
select * from table2 where id in ($s)
注:以上方法数据量大了自然能够体现出来
mysql单表超过150万效率就会明显降低了。