喜悦国际村 » PHP高级编程 » 问一个多表查询取记录集的问题?

页: [1]
hackiss2007-3-6 03:57 AM
问一个多表查询取记录集的问题?

[size=4]我有一个数据检索的表单,某一些检索条件会针对某个特定的表。最后是从多个数据表中检索数据,然后取这些数据的交集就是我最后的检索结果。
>问题1:这些要取数据的表记录都比较多,大概都在100w左右,这样分别按条件检索数据再取交集会比较慢,甚至运行不了。有没有更好的算法(实现方法)?
>问题2:能不能用缓存的方式,去减少数据库的压力?应该怎么去实现?
>请大家帮忙看看,有没有什么更好的解决方案![/size]

hackiss2007-3-6 07:35 AM
求救!!

请大家帮忙!!!

seakingx2007-3-6 09:25 AM
问题2我不懂

问题1,可以试着按类别或者时间分表。然后按查询条件对不同的分表进行查询。

hackiss2007-3-7 12:58 AM
请高手留步!

小女出涉江湖,请指点~!~!~!

hackiss2007-3-7 04:03 AM
高手留步啊!!

先谢了!!!

hackiss2007-3-14 06:06 AM
有高手进来讨论讨论啊!!!

hackiss2007-3-15 02:31 AM
求……求…求助!~~!~~~

hackiss2007-3-15 05:11 AM
请进来的签名!

cdcomic2007-3-15 09:55 AM
问题1:尽量做好数据库的索引,外键之类的,或者分表,分段执行

问题2:squid可以满足你

hackiss2007-3-16 03:15 AM
squid肯定不行,要除了数据量大以外,还要考虑大流量用户的访问。

hackiss2007-3-17 01:17 AM
大家帮忙回帖吧????

hackiss2007-3-19 05:29 AM
大家帮忙吧。谢谢 谢谢 谢谢了!~!~~

ChinaID2007-3-20 05:55 AM
看来是比较复杂,如果上百万的数据,通常都是从硬件或者是换用更强效的Oracle。

hackiss2007-3-21 07:06 AM
谢谢!!!

网络游子王2007-3-27 09:59 AM
问题2的话可以用mysql集群来做吧?

蟋蟀2007-3-27 12:54 PM
表的ENGINE是什么类型的.几个表联合查询? 表结构设计是否合理
可以用heap去处理
mysql_query('drop table if exists my_heap');
mysql_query('create table if not exists m_heap(select * from table1 as t1 , table2 as t2 where t1.id=t2.id//这部分为联合查询的记录,以后在用可以直接从内存表中取出来)');
mysql_query('alter table m_heap ENGINE=heap');

cyber2007-4-1 04:24 AM
取交集的话,建议建立查询结果集,再做索引。
把结果ID保存为数组,
然后对数组取交集,就不会出现多表查询了,又可缓解数据库压力。

本人做的网站数据有1000万以上,查询速度还是很快。

davidnick2007-4-8 02:59 AM
不知道你所说的数据表是不是同样结构的表
如果是MyISAM类型的表,mysql可以merge,将多个表合并为一个表,对这个虚拟表进行操作,但是100万的数据,进行复杂查询,速度还是会比较慢。
我自己有做类似的系统,是将数据分表存储,每个表10万数据,然后按需要merge相应的表进行查询。
merge操作很快,没有对数据作物理结构改变。

Phoenix59sky2007-4-11 08:03 AM
用存储过程,全文索引。

奶瓶2007-4-11 02:29 PM
[quote]原帖由 [i]hackiss[/i] 于 2007-3-16 11:15 AM 发表
squid肯定不行,要除了数据量大以外,还要考虑大流量用户的访问。 [/quote]
啥意思?


查看完整版本: 问一个多表查询取记录集的问题?


Powered by Discuz! Archiver 6.1.0  © 2001-2006 Comsenz Inc.
Processed in 0.006494 second(s), 2 queries