UPDATE : 추가 실행되는 쿼리는 두 번째 :이 쿼리는 어떤 MySQL 인덱스에서 유익합니까?
는(고려하여 인덱스를 찍을 때 어쩌면 필요 ???)
SELECT m.time, m.message, m.receiver_uid AS receiver, m.sender_uid AS sender
FROM messages AS m, users AS u
WHERE u.uid = '$coID'
AND ((m.receiver_uid = '$meID' AND m.sender_uid = '$coID') OR
(m.receiver_uid = '$coID' AND m.sender_uid = '$meID'))
ORDER BY m.time DESC
- $ MEID는 사용자의 ID입니다 누가 실행 wuery,
- $ coID는 연락처의 ID입니다.
나는 다소 큰 쿼리를 있는데 그것은 사용자가 방문에게 매번 내 페이지를 실행합니다. (
LAST MESSAGE from EVERY 'CONVERSATION' ordered by TIME.
는 그래서 마지막 메시지가 나타납니다
SELECT m2.message, m2.time, m2.sender_uid AS sender, m2.receiver_uid AS receiver,
m.contact, u.ufirstname
FROM ( SELECT CASE
WHEN sender_uid = '$me' THEN receiver_uid
ELSE sender_uid
END AS contact,
MAX(time) AS maxtime
FROM messages
WHERE sender_uid = '$me' OR receiver_uid = '$me'
GROUP BY CASE
WHEN sender_uid = '$me' THEN receiver_uid
ELSE sender_uid
END ) AS m
INNER JOIN messages m2 ON m.maxtime = m2.time
AND ((m2.sender_uid = '$me' AND m2.receiver_uid = m.Contact)
OR (m2.receiver_uid = '$me' AND m2.sender_uid = m.Contact))
INNER JOIN users AS u ON m.contact = u.uid
ORDER BY time DESC
- 날
이 쿼리는 (성공적으로) 검색합니다 쿼리를 실행하는 사용자의 ID입니다 $ 모든 PM 세션에서 메시지를 보내거나 받겠는지) 시간별로 정렬하고 연락처 정보를 검색합니다.
정확하게 설명하지 않았다면 알려주십시오.
내 MySQL의 테이블은 다음과 같습니다
receiver_id | sender_id | message | time
무엇 지수 (들) 것이 쿼리 혜택에서?
빅 쿼리 :
하는 출력을 EXPLAIN
은 (조인 부분은 연락처 이름 효율적이어야한다 검색 있도록 사용자 테이블은 이미 ID에 대한 기본 키가)
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 4 Using temporary; Using filesort
1 PRIMARY m2 ALL NULL NULL NULL NULL 42 Using where
1 PRIMARY u eq_ref PRIMARY PRIMARY 4 m.contact 1 Using where
2 DERIVED messages ALL NULL NULL NULL NULL 42 Using where; Using temporary; Using filesort
업데이트 부분에 쿼리 :
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE u const PRIMARY PRIMARY 4 const 1 Using index; Using filesort
1 SIMPLE m ALL NULL NULL NULL NULL 42 Using where
이전 (14 일) 메시지를 이전 테이블로 옮기는 방법은 무엇입니까? 사용자가 오래된 메시지를 정말로 읽고 싶을 때만 긴 테이블을 검색해야합니다. – SuperSpy