База данных интернет-закладок (упрощенная). Я подумал, что имеет смысл организовать таблицы логически, например:
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 и придумал приведенный выше код, но, может быть, я упускаю из виду синтаксис или идиому, которые могли бы его улучшить?