У меня слишком много запросов для справочных таблиц, и кто-нибудь может предложить альтернативу? - PullRequest
1 голос
/ 22 апреля 2011

В настоящее время я создаю приложение codeigniter, которое обрабатывает определенный тип млекопитающих.Когда пользователь добавляет новую запись (млекопитающее), ему выдаются списки «типов пород», «полов» и т. Д. Они хранятся в отдельных таблицах базы данных.

В настоящее время для получения этих данных у меняотдельные функции, такие как:

$this->Mammal->get_list_of_breeds()
$this->Mammal->get_list_of_genders()

Каждый из этих вызовов вызывает запрос, может потребоваться до 7 или 8 различных поисков для запроса.Кто-нибудь знает, если это значительно замедлит мое приложение или вызовет слишком много запросов к базе данных.В большинстве случаев максимальное количество записей в любой отдельной таблице меньше 300 записей.

Есть ли лучший способ сделать это, объединяя запросы в одну функцию и используя php для разделения поискаполя?

Любые идеи или мысли очень ценятся.

Ответы [ 2 ]

1 голос
/ 22 апреля 2011

Одна идея состоит в том, чтобы взять некоторые из меньших наборов параметров и поместить их в массивы, особенно если они не могут быть изменены пользователем. Например, пол может быть просто в массиве. Насколько я знаю, есть только два варианта. Если есть другие подобные наборы опций, вы также можете создать эти массивы.

Но даже 300 записей - это не огромное количество данных. Я полагаю, что вы не создаете следующий Facebook, так что просто сделать несколько чистых запросов, чтобы получить нужные вам опции, вероятно, не будет большой проблемой.

Лично я бы не положил все это в один стол. Большие общие таблицы просто кажутся обманчивыми, и вы все равно получите тот же объем данных. Вы можете иметь отдельные таблицы и выполнять одно и то же, объединяя запросы.

0 голосов
/ 22 апреля 2011

Как вы прокомментировали сами, да, действительно, вы должны поместить все в одну таблицу ...

Итак, у вас есть стол под названием млекопитающие

И тогда у вас будут поля: пол, породы и т.д. ...

Теперь это намного проще при программировании на php, так как теперь вы можете выполнить один запрос и затем отобразить все, например:

$query="SELECT * FROM `mammals`";
$query_exec=mysql_query($query);

while($result=mysql_fetch_array($query_exec))
{
print "gender: ".$result['gender']." breed: ".$result['breed'];
}

Маленькое объяснение: Запрос получает все из таблицы под названием млекопитающие Тогда while просто продолжается до тех пор, пока в массиве еще есть результаты Массив выборки помещает данные в переменную, и каждое поле может быть прочитано с помощью $ result []

Я знаю, что это не очень ясное объяснение, но мой разум также не совсем ясен в этот поздний час: /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...