作者dspswen (阿天)
看板Database
标题[MYSQL]捞两个资料表 其中一个很大的捞法
时间Wed Apr 2 15:34:29 2014
(针对
SQL 语言的问题,用这个标题。请用 Ctrl+Y 砍掉这行)
资料库名称: MYSQL
资料库版本:5.1
内容/问题描述:
我有两个 TABLE
A 捞出来可能是比较小的资料,但是其中 A 的栏位中有个会员 ID
那我又需要列出的资料表中含有会员的几项详细资料(会员数百万笔)
会员的详细资料是在 B 资料表,如果下了 JOIN 会挂掉 ... (查询数量变A*B的感觉)
请问这样的情形该怎麽下才比较好呢
感谢
--
(′▽‵ ) _____________
かんーまおーよんすっすー
/ 丶 ヽ
U CHU BIEN CAPSULE | (よんすっすー)
/ ヽ / /
__ 斯斯鼻炎胶嚢 ___ | くぉーそーよんすっすー
/ /へ ヘ/ /
スズレックス鼻炎カプセルA | (よんすっすー)
(_/| \_ノ/
θ | びーさいびーえーんよんすっすー
/ /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Mr.よんすっすー
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.163.116.102
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Database/M.1396424072.A.C5F.html
1F:推 misssomeone:你是用哪种JOIN? 04/02 16:40
2F:推 bohei:查询的次数是多次还是只会有一次查询? 04/02 18:10
3F:→ bohei:如果有多次,可以先用一个TEMP把会用到的会员资料暂存起来 04/02 18:10
4F:→ bohei:之後就只需要对这TEMP做JOIN即可 04/02 18:10
5F:推 ImOnLine:请问楼上temp怎麽下呢?还是要create new table呢? 04/02 22:06
6F:→ dspswen:了解,我各种 JOIN 都有试看看,但是都跑不动 04/02 22:57
7F:推 bohei:我是使用Oracle,语法不尽相同,但我刚刚google mysql + temp 04/03 12:17
8F:→ bohei:找得到教学的文章~ 剩下的就靠自己吧XD 04/03 12:18
9F:→ bohei:对了..这两个资料表有建Index吗? 04/03 12:19
10F:→ bohei:数百万笔虽然很多,但也没那麽多... 如有正确Join且利用Index 04/03 12:20
11F:→ bohei:应该不至於挂掉勒.. 04/03 12:20
12F:推 popcorny:join B的栏位要有建立index,有建应该会很快 04/03 13:32
13F:推 rockchangnew:资料库没那麽烂,铁定是没正确的index 04/03 13:33
14F:→ bbcust:应该是index问题 以前也有做过好几个百万笔一起join 04/03 13:54
15F:→ bbcust:单纯select也没几秒 04/03 13:55
16F:→ bbcust:不过是MSSQL 当时影响效能的主要还是index 04/03 13:55
17F:→ jinmin88:该不会到cross join了吧? 04/07 07:00
18F:→ knightnick:分两次捞 先取会员ID,再去另一个表拿资料 04/11 20:14