MySQL запросы - псевдонимы и количество записей - PullRequest
0 голосов
/ 18 апреля 2011

Я работаю над очень старой базой данных для клиента, который продает книги онлайн. У нас есть 15000 записей для просеивания, на которые ссылаются разные таблицы - сайт запрашивал все 15 тыс. Строк (используя Classic ASP, а), и он действительно работал очень медленно.

Я теперь использовал запрос JOIN, чтобы присоединить справочную таблицу к записям, которые мы хотим отобразить, и использовал LIMIT и OFFSET, чтобы запрашивать 100 строк одновременно - все намного быстрее.

Две вещи, которые я хочу сделать:

  • Две таблицы, к которым я присоединился, имеют одинаковое имя столбца (BookID), которое требуется для получения дополнительной информации о книгах. Я знаю, что вы можете использовать псевдонимы, но поскольку мы получаем много деталей о каждом названии, я бы предпочел получить только идентификатор в качестве псевдонима, а все остальное может остаться. Возможно ли это?

  • Поскольку мы теперь ограничиваем наш запрос до 100 за раз, мы не можем видеть, сколько у нас всего записей. Есть ли способ сделать это, не открывая второе соединение и не замедляя сайт снова ...?

Ответы [ 3 ]

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

Извлечение записи из базы данных через пейджинг означает, что вы будете получать записи из базы данных 100 за раз, чтобы запрос выполнялся быстро.Перейдя по следующей ссылке

http://www.4guysfromrolla.com/webtech/062899-1.html

, вы получите определенное количество записей.

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

просто интересно, таблицы проиндексированы?Я работал с SQL Server, DB2, MySQL и MS Access.Я никогда не видел заметно низкую производительность всего около 150 000 записей при индексации.

с mysql, вы должны выполнить проблемный запрос с префиксом "DESC" или "EXPLAIN", чтобы увидеть, сколько строк просматривается в неми если используется индекс.

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

Mysql имеет эту функцию FOUND_ROWS (), используемую вместе с SQL_CALC_FOUND_ROWS ( см. Здесь ), которая поможет найти итоговые записи и, следовательно, разбить на страницы ваши результаты ...

Что касается вашегозапрашивает, имеют ли две таблицы одно и то же имя столбца, затем ссылаются на них как tab1.ID и tab2.ID - если это внешние ключи и, следовательно, они должны иметь одинаковое значение, тогда вам нужна только одна из них - в этом случае tab1.BookID как BookID будетбыть более чем уместным.

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