我有一个客户希望我为他的网站做一个后端。他需要一张表格来显示所有带分页的文件。如何优化排序和限制?
CREATE TABLE `content_files` (
`id` varchar(16) NOT NULL,
`owner` varchar(16) DEFAULT NULL,
`location` varchar(16) NOT NULL,
`parent` varchar(16) DEFAULT NULL,
`date` int(11) NOT NULL,
`filename` varchar(256) NOT NULL,
`username` varchar(64) NOT NULL,
`email` varchar(256) NOT NULL,
`ip` varchar(15) NOT NULL,
`json` text NOT NULL,
`bin` blob NOT NULL
);
ALTER TABLE `content_files`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `ID` (`id`),
ADD KEY `id_2` (`id`),
ADD KEY `date` (`date`),
ADD KEY `filename` (`filename`(255)),
ADD KEY `username` (`username`(63)),
ADD KEY `email` (`email`(255)),
ADD KEY `ip` (`ip`(14));
需要排序的项目是日期,文件名,用户名,电子邮件和IP。目前有65,000条记录。如果极限高,如预期的那样需要更长的时间,但是它非常长。 100秒获得第60,000条。
我只是用:
SELECT id, date, filename, username, email ip
FROM content_files
ORDER BY filename
LIMIT 60000, 20
找遍了这个问题,但是,没有任何提示似乎改善我的查询。在他的模式中是否有一些明显的错误?我怎样才能优化这个?
InnoDB?显示'EXPLAIN'结果。 – 2015-02-07 18:54:10