Я где-то читал здесь, что ORDER BY
сортирует только отфильтрованный набор, когда присутствует предложение WHERE
. Я вижу некоторые другие результаты.
В моей таблице ~ 550 тыс. Записей, следующий запрос завершается через ~ 2,5 секунды:
SELECT
*
FROM
scrapings
WHERE MATCH (title, descr) AGAINST ("young" IN BOOLEAN MODE)
ORDER BY
dt DESC
LIMIT 100
При удалении предложения ORDER BY
времясократить до ~ 0,1 секунды. Как я могу сделать так, чтобы он сортировал только отфильтрованные результаты?
О, и я также попытался удалить предложение WHERE
, просто чтобы убедиться, что на сортировку отфильтрованных результатов не уходит ~ 2,5 секунды.
о 2: вот оно EXPLAIN
изд:
ах 3: вот это DDL
CREATE TABLE `scrapings` (
`url` varchar(512) NOT NULL,
`dt` int(11) NOT NULL,
`title` text CHARACTER SET utf8mb4,
`descr` text CHARACTER SET utf8mb4,
`image` varchar(1024) DEFAULT NULL,
`domain` varchar(255) DEFAULT NULL,
PRIMARY KEY (`url`,`dt`),
UNIQUE KEY `image` (`image`),
FULLTEXT KEY `title` (`title`,`descr`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;