Этот тот случай когда "полная" нормализация вредит работе с данными.
Да, и храните не возраст, а год(дату) рождения, потому что через год Васе будет 13 лет, а у вас в таблице все еще будет 12 лет.
Как сделать, чтобы один товар мог принадлежать нескольким категориям!
Если промежуточную таблицу неудобно/трудно делать то, как вариант продублировать полностью товар в таблице товаров, но с другим categoryname. (одна запись принадлежит одной категории, дубляж - другой категории)
Вы про отношение "один ко многим" слышали? В одной таблице карточки пользвателей - ФИО, адрес, любимое блюдо и т.д., в другой таблице - журнал посещения, связан по айди с таблицей карточек. Это к слову про "для каждого по таблице"..
Поскольку автор хранит не весь журнал, а только время последней активности то - да, можно управится одной таблицей - после поля "любимое блюдо" добавить поле типа "время посещения".
Думаю дело в индексах, точнее в их отсутствии.
Вот спробовал - 122 тыс записей, нужные индексы, select * from thistable where = ... возвращает 18 записей (но то не суть), время выборки 0,090 сек.
MySQL-5.0.1, MyISAM, CPU: Turion-x2 1900 MHz
С уважением.
P.S. Да, кстати, <условие фильтра> тоже важно для работы индексов.
Для меня естественнее когда таблица меняется по строкам, а не по столбцам
При большом числе записей - расходы, если есть индекс по полям - перестройка индексов.
Ну а так дело вкуса конечно..