我只是剛開始運行我的查詢解釋,並看到類型是所有,我正在使用filesort。優化簡單的mysql查詢,在兩列上排序
我不知道如何優化,即使是最簡單的查詢,如果任何人都可以在下面的查詢這只是主要他們的名字和第二名字其次檢索用戶和訂單提供指導:
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
在INSERT而不是SELECT上使用TRIM()會更加優化。所以它只是調用一次而不是每次都調用。 –
也許下面的索引會幫助'改變表用戶添加索引block_fname_sname_idx(Blocked,FName,SName)' –
@ôkio謝謝你將更新那部分! – user2363025