[SQL ]捞两个资料表 其中一个表很大的捞法

楼主: dspswen (阿天)   2014-04-02 15:34:29
(针对 SQL 语言的问题,用这个标题。请用 Ctrl+Y 砍掉这行)
数据库名称: MYSQL
数据库版本:5.1
内容/问题描述:
我有两个 TABLE
A 捞出来可能是比较小的资料,但是其中 A 的字段中有个会员 ID
那我又需要列出的资料表中含有会员的几项详细资料(会员数百万笔)
会员的详细资料是在 B 资料表,如果下了 JOIN 会挂掉 ... (查询数量变A*B的感觉)
请问这样的情形该怎么下才比较好呢
感谢
作者: misssomeone (风舞月光)   2014-04-02 16:40:00
你是用哪种JOIN?
作者: bohei (run and fall)   2014-04-02 18:10:00
查询的次数是多次还是只会有一次查询?如果有多次,可以先用一个TEMP把会用到的会员资料暂存起来之后就只需要对这TEMP做JOIN即可
作者: ImOnLine (So be it)   2014-04-02 22:06:00
请问楼上temp怎么下呢?还是要create new table呢?
楼主: dspswen (阿天)   2014-04-02 22:57:00
了解,我各种 JOIN 都有试看看,但是都跑不动
作者: bohei (run and fall)   2014-04-03 12:17:00
我是使用Oracle,语法不尽相同,但我刚刚google mysql + temp找得到教学的文章~ 剩下的就靠自己吧XD对了..这两个资料表有建Index吗?数百万笔虽然很多,但也没那么多... 如有正确Join且利用Index应该不至于挂掉勒..
作者: popcorny (毕业了..@@")   2014-04-03 13:32:00
join B的字段要有建立index,有建应该会很快
作者: rockchangnew (rock)   2014-04-03 13:33:00
数据库没那么烂,铁定是没正确的index
作者: bbcust (bbcust)   2014-04-03 13:54:00
应该是index问题 以前也有做过好几个百万笔一起join单纯select也没几秒不过是MSSQL 当时影响效能的主要还是index
作者: jinmin88 (昼伏夜出)   2014-04-07 07:00:00
该不会到cross join了吧?
作者: knightnick (liang)   2014-04-11 20:14:00
分两次捞 先取会员ID,再去另一个表拿资料

Links booklink

Contact Us: admin [ a t ] ucptt.com