1
그래서 모든 사용자와 그 값을 가진 테이블이 있습니다. 그리고 나는 그들이 얼마나 많은 "돈"을 버린 후에 주문하고 싶습니다. 문제는 users.money와 users.bank라는 두 개의 별도 필드에 돈이 있다는 것입니다.두 필드로 정렬 - 인덱싱
그래서이 내 테이블 구조입니다 :
CREATE TABLE IF NOT EXISTS `users` (
`id` int(4) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(54) COLLATE utf8_swedish_ci NOT NULL,
`money` bigint(54) NOT NULL DEFAULT '10000',
`bank` bigint(54) NOT NULL DEFAULT '10000',
PRIMARY KEY (`id`),
KEY `users_all_money` (`money`,`bank`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci AUTO_INCREMENT=100 ;
그리고 이것은 쿼리입니다 :
SELECT id, (money+bank) AS total FROM users FORCE INDEX (users_all_money) ORDER BY total DESC
잘 작동하지만 내가 EXPLAIN 실행할 때 그것은 "filesort 사용"을 보여주고, 내가 ' 그것을 최적화 할 수있는 방법이 있는지 궁금합니다.