我刚刚开始对我的查询运行解释并看到类型是 All 并且我正在使用文件排序。
我不确定如何优化最简单的查询,如果有人可以提供有关以下查询的指导,该查询主要按名字检索用户和订单,其次按名字检索用户和订单:
SELECT UserID, TRIM(FName) AS FName, TRIM(SName) as SName, pic
FROM users WHERE Blocked <> 1
ORDER BY FName, SName
LIMIT ?, 10
表创建如下:
CREATE TABLE IF NOT EXISTS `users` (
`UserID` int(11) NOT NULL,
`FName` varchar(25) NOT NULL,
`SName` varchar(25) NOT NULL,
`Pword` varchar(50) NOT NULL,
`Longitude` double NOT NULL,
`Latitude` double NOT NULL,
`DateJoined` bigint(20) NOT NULL,
`Email` varchar(254) NOT NULL,
`NotificationID` varchar(256) NOT NULL,
`Pic` varchar(500) DEFAULT NULL,
`Radius` int(11) NOT NULL,
`ads` tinyint(1) NOT NULL,
`Type` varchar(5) NOT NULL,
`Blocked` tinyint(4) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=1469 DEFAULT CHARSET=latin1;
解释给出以下内容:
id : 1
select_type : SIMPLE
table : users
type : ALL
possible_keys : NULL
key : NULL
key_len : NULL
ref : NULL
rows : 1141
Extra : Using where; Using filesort
最佳答案
添加索引(Blocked, FName, SName)
如果可能,将位置更改为 Blocked = 0
关于mysql - 在两列上使用排序优化简单的 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34651343/