2013-03-15 3 views
0

У меня есть программа, которая отслеживает игры, играемые за год. Как только этот год будет завершен, я планировал разрешить администратору архивировать этот сезон. Для этого я создал копию этой таблицы с именем для предыдущего сезона. Я сохранил это имя в отдельной таблице.Архив Таблицы - старые копии

Проблема в том, что я не могу выполнить sql-запрос с именем таблицы, сгенерированным из таблицы.

У любого есть какие-либо рекомендации относительно того, как с этим справиться. Таблица может иметь 1000-2000 записей в год, и это может быть установлено через 20 лет (возможно, не с технологией). Я мог бы добавить столбец в течение года и использовать его в качестве сортировки, но будет ли он медленным, когда я удалю записи размером 20K - 40K?

Другая идея, которая у меня была, - сохранить активный год за одним столом и архивировать всю историю на другую отдельную? Пользователям все равно, если для загрузки требуется несколько секунд, но не текущие данные?

Благодаря

+0

Если у вас правильно указана таблица, она не будет медленной с 40k записей. Добавление индекса в год очевидно, но немного почитать индексы. Вы можете использовать 'EXPLAIN', чтобы узнать, где вы запрашиваете медленный (если это так) –

+1

Вы не должны сильно беспокоиться о производительности, когда в вашей таблице будет всего 40 тысяч записей. – MarcinJuraszek

+0

Сейчас это действительно быстро, это только 1000 записей. Я просто пытаюсь планировать будущее, и я думал о отдельной таблице на каждый год. У меня есть еще один вызов, у меня есть команды, перечисленные в отдельной таблице, и присоединяйся к турнирной таблице. Не уверен, как архивировать команды, мне придется также указать способ добавления даты. – user1876363

ответ

0

Медлительность является функцией сложности запроса столько, сколько он имеет размер записи. Вы можете делать медленные запросы со 100 строками или быстрыми с миллионами. Если вам нужна конкретная помощь в оптимизации запросов, отправьте ее, иначе работать с ней не так много, кроме ранее предложенных индексов.

Как правило, величина порядка 10 тыс. Не будет делать ничего особенного. Не пытайтесь переопровергать, прежде чем вы на самом деле идентифицируете слабые стороны. Разделение таблиц очень редко необходимо, прежде чем ударить миллионы, если не десятки миллионов строк. Вы попадаете в ловушку «преждевременной оптимизации». Не делайте этого, если вы не уверены, что это вызовет проблемы.

Я бы бросил указатель на столбцы, которые вы используете для таблицы JOIN (возможно, user_id) и покончите с этим. Если вы используете внешние ключи, есть автоматическое. Пока вы не заметите, что ваши запросы замедляют работу приложения, вы, вероятно, нанесли бы больше вреда, чем пользы, заставив его работать с разделением.