SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.03.2011 11:42:03

Argentum
Участник
Зарегистрирован: 07.03.2011
Сообщений: 2

Как правильно составить SQL - запрос

Здравствуйте!

Есть таблица, в которой на данный момент >20000 записей
Из нее нужно выбирать по конкретному внешнему ключу набор записей (от 1 до нескольких тысяч). На сайте записи отображаются по страницам, т.е. только 20-50 записей. Очевидное решение LIMIT x,y, где х-номер страницы
Но при этом запрос выполняется по времени столько же, сколько и без LIMIT.
Мой запрос:
SELECT * FROM testtable
WHERE idUser=100
LIMIT 100,200

Как изменить запрос, чтобы выборка происходила быстрее?

Неактивен

 

#2 30.03.2011 12:46:56

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Как правильно составить SQL - запрос

А ключик на idUser то есть?

Неактивен

 

#3 30.03.2011 13:37:25

Argentum
Участник
Зарегистрирован: 07.03.2011
Сообщений: 2

Re: Как правильно составить SQL - запрос

paulus написал:

А ключик на idUser то есть?

idUser - индекс. Первичным ключом стоит поле id - автоинкремент. А idUser - внешний ключ.

Я так понял, что происходит полная выборка по условию, а потом отсекаются Лимитом ненужные записи. А вот как выбрать только нужные?
Тут вот вычитал, что нужно выбирать подзапросом с ЛИМИТ только поле id, а потом INNER JOIN выбирать из таблицы нужные записи. Быстрее должно вроде быть. Сейчас буду пробовать.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson