Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Нумерация строк в таблице (Alex) 14/11/2008 - 00:52:19
      Re: Нумерация строк в таблице (bac) 14/11/2008 - 01:55:56
      Re: Нумерация строк в таблице (Kirill) 14/11/2008 - 11:19:15
      Re: Нумерация строк в таблице (Alex) 14/11/2008 - 19:16:15
      Re: Нумерация строк в таблице (bac) 14/11/2008 - 22:46:20

> Original message text:
> From: Alex - 14/11/2008 - 00:52:19
> Subject:Нумерация строк в таблице
> -----------------
> Столкнулся с такой проблемой:
> select * from table limit 25 offset 10 выполняется 0.00001 секунд
> select * from table limit 25 offset 1000000 выполняется 10 секунд
> (таблица очень огромная). Т.е. выборка 25 строк с какой-то очень дальней строки делается очень долго. При этом порция 25 строк в начале таблицы выбираются быстро. Т.е. конструкция limit на больших таблицах не эффективна, а выборка в 10 секунд не подходит. Я эксперементировал и на динамических таблицах и на фиксированных скорость сильно не изменяется (время выборки с 10 уменьшается до 8 секунд).
> Какой есть способ быстро добраться до дальних строк?
> Скажем выборка
> select * from table where id>1000000 limit 25
> выполняется очень быстро, но только поле id - это не номер строки, а номер записи. А они у немя не совпадают...
> Дополнительно создавать столбец с номерами строк? Это как-то не красиво получается... Excell получится, а не реляционная база.
> Опять же как нумеровать новый столбец, если id и так автоинкрементный PK ?
>


From: Alex - 14/11/2008 - 19:16:15
Subject:Нумерация строк в таблице
-----------------
>А смысл такого запроса без сортировки?
>Какая структура таблицы?
>Какие индексы и что говорит explain?

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

explain говорит, что индексов не использует, запрос читает всю таблицу. Как он будет вообще использовать индексы, если нет условий и сортировки?
Explain:
select_type=SIMPLE
type=ALL
possible_keys=NULL
rows=5595875
Хотя зачем mysql читает всю таблицу чтобы прочитать последнии 25 строк ума не приложу...
Самое интересное, что таблицы с фиксированной длиной строк тоже долго читаются. А там ведь вообще все просто: умножить кол-во строк на длину строки!


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
34514



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |