Abaddon> а индексы не особо нужны
Ну ты даёшь. А поиск лекарства по названию? А поиск пациента по имени или адресу? Рецепта по дате?
Abaddon> твое предложение по формату
Это не предложение по формату, это какая инфа нужна в базе. Кстати забыл указать — на каждом рецепте количество рефилов.
Abaddon> а вот тут надо уже знать конкретно что надо...
Начало без конкретики видно. Вот есть рецепт, из него ссылка на описание лекарства. Надо найти все другие рецепты, которые действительны сейчас и все рецепты, которые были выписаны раньше, но последействие лекарства ещё сохранилось, плюс возможные аллегрии пациента или противопоказания. Вот и думай.
Abaddon> тогда полученные лекарства лучше вынести отдельной таблицей
Я же говорю, что всё нормализовать надо. Если хочешь компактно, то минимум 3 форма, но неплохо бы и 4 или 5 — чтобы не было функциональной зависимости, иначе целостность затрахаешься поддерживать.
Abaddon> значит что не надо перекапывать всю таблицу в поисках коллизий, можно просто приписать в конец
Тогда понятно почему у тебя так зависит время выборки от размера таблицы.
Abaddon> Да, но допустим врач тратит на пациента 15 минут. Допустим каждому он выпишет один рецепт (допущение спорное, кому-то назначит лекарсво не требующее рецепта, кому вообще не назначит, кому несколько выпишет, но приянть можно). Значит можно считать что один врач выписывает 8*4=32 рецепта в рабочий день. Допустим врачей 100000. 3,2 М запросов за 8 часов - это немного для современных серверов (не учитывая часовые пояса - они не одновременно все работают).
Моей жене — 4, мне иногда до 12.
Abaddon> Я про архив неактуальных рецептов. Актуальные будут максимум 5-10 секунд
выбираться. Это если все в эту бд будут ломиться.
Ещё раз — актуальные рецепты — это все за год-полтора (раньше — 2-3). В год выписываются сотни миллионов рецептов.
Abaddon> то что запросы сложные
Так я тебе про это и говорил, когда упоминал нормализацию.
Abaddon> а фиг его знает... это статистика самого mysql, похоже запросы типа statement execute считаются за два
Чего-то здесь не так.