Users table
user_id
pic_url
name
friends table
auto_id
userid
friendid
status
actions table
auto_id
userid
type
subject
body
datetime
친구가 업데이트 된 것을 보여주고 싶습니다. 블로그 게시물 일 수도 있고 상태 변경 일 수도 있지만 로그인 한 사용자의 친구 만 표시해야합니다.은 MySQL 조인에 도움이 필요합니다.
내 사용자베이스가 너무 커서 성능이 필수적입니다. 더 좋은 방법이 있습니까? 제발 보여주세요
SELECT u.user_id, u.pic_url, u.name, a.auto_id, a.userid, a.type, a.subject, a.body, a.datetime
FROM actions AS a
LEFT JOIN users AS u ON u.auto_id=a.userid
LEFT JOIN friends AS f ON f.userid=a.userid
WHERE f.friendid=1 //1 would be my user ID
AND f.status=active
제 생각으로는 이것이 올바른 것은 아닙니다.
50,000 명의 사용자가 있고 내 사용자 ID가 1이고 20,000 명의 사용자가있는 친구라고하면 친구 인 사용자가 게시 한 작업 테이블의 모든 항목을 반환해야하며 포함 시키려면 수정해야합니다 나 자신의 행동
더 빠른 조회를 위해 일종의 해시 테이블을 사용하는 것에 대해 talki가 들었습니다. 어떤 도움
색인에 대한 추가 정보 http://www.alistapart.com/articles/indexing-the -web-its-not-just-googles-business/ –
나는 이것이 mysql 일 것임을 언급해야한다. 해쉬 인덱스를 추가하는 특별한 방법이 있는가? 아니면 같은 인덱스 일까? – JasonDavis
내가 추가 한 메모를 참조하십시오. 나는 아마 그 세부 사항에 들어가면 안된다. BTREE와 HASH 인덱스 간의 성능 차이는 BTREE와 인덱스가없는 성능의 차이보다 훨씬 작습니다. –