(упрощенная) база данных интернет-закладок.Я подумал, что имеет смысл организовать таблицы логически, например так:
Bookmarks (id, title, url; basically external data)
+------+------------+-----+
| suid | Title | ... |
+------+------------+-----+
User (user-specific data: favorites, ratings, etc)
+------+------------+-----+
| suid | IsFavorite | ... |
+ + (0 or 1) + +
+------+------------+-----+
History (last used, use count etc)
+------+------------+-----+
| suid | LastUsed | ... |
+ +(TDateTime) + +
+------+------------+-----+
('suid' - уникальный идентификатор, целочисленный первичный ключ)
Из закладок, помеченных как избранное Мне нужно выбрать N последнее использованное (для удобства меню во время выполнения).
SELECT Bookmarks.suid, Title from Bookmarks
INNER JOIN User USING (suid)
INNER JOIN History USING (suid)
WHERE IsFavorite = 1
ORDER BY LastUsed DESC
LIMIT 15;
Оператор работает и кажется достаточно читабельным, ноэто оптимально?Таблица закладок предназначена для хранения в среднем 20-50 тыс. Записей (т. Е. Не стандартного менеджера закладок в браузере :-) При запуске приложение выполнит 3 или 4 аналогичных оператора, чтобы заполнить элементы управления.Все поля, используемые в примере, проиндексированы.
Я учу себя SQL и придумал приведенный выше код, но, возможно, я пропускаю синтаксис или идиому, которая могла бы его улучшить?