私はテーブルを持っています:
CREATE TABLE `tMessages` (
`tMessages_id` bigint(20) NOT NULL AUTO_INCREMENT,
`tUsers_sender_uid` bigint(20) NOT NULL,
`tUsers_recipient_uid` bigint(20) NOT NULL,
`tMessages_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`tMessages_text` varchar(2000) NOT NULL,
PRIMARY KEY (`tMessages_id`),
KEY `tUsers_sender_uid` (`tUsers_sender_uid`),
KEY `tUsers_recipient_uid` (`tUsers_recipient_uid`),
KEY `tUsers_uids` (`tUsers_sender_uid`,`tUsers_recipient_uid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
する必要がある:
1) 2 人のユーザー間のすべてのメッセージを選択し、私はこれを行いました:
SELECT * FROM `tMessages` FORCE INDEX (tUsers_uids) WHERE tUsers_sender_uid = 1 AND tUsers_recipient_uid=2 OR tUsers_sender_uid=2 AND tUsers_recipient_uid = 1
-- これは高速な方法ですか?
2) uid = 1 と別のユーザーの間のメッセージのすべてのグループの最後のメッセージを選択します
-- どうすればこれができますか?