【发布时间】:2016-03-10 03:25:13
【问题描述】:
mysql-5.6.24-win32.1432006610
我有两个简单的表,TUser(id, name) 和 TMessage(id, uid, message)。 TUser 保存用户,TMessage 保存用户消息。
SQL如下,另见:http://sqlfiddle.com/#!9/7f099
CREATE TABLE TUser(
id INT UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT,
name VARCHAR(128) NOT NULL
);
CREATE TABLE TMessage(
id INT UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT,
uid INT UNSIGNED NOT NULL,
message VARCHAR(256) NOT NULL
);
CREATE INDEX TMessageIndexUid ON TMessage(uid);
插入一些数据:
INSERT INTO TUser (name) VALUES
('jack')
,('rose')
,('peter');
INSERT INTO TMessage(uid, message) VALUES
(1, 'Hello jack')
, (1, 'Jack, how are you')
, (1, 'Good morning jack')
, (2, 'I love you, rose')
, (3, 'Peter, please call back')
, (3, 'What are you doing, Peter');
当我运行以下 LEFT JOIN + ORDER BY 查询时,FileSort 显示在 EXPLAIN 结果中:
EXPLAIN
SELECT *
FROM TUser
LEFT JOIN TMessage
ON TUser.id=TMessage.uid
WHERE TUser.id=3
ORDER BY TMessage.id DESC;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE TUser const PRIMARY; PRIMARY 4 const 1 Using temporary; Using filesort
1 SIMPLE TMessage ref TMessageIndexUid TMessageIndexUid 4 const 2 \N
有什么问题吗?
【问题讨论】: