• Как правильно создать навигацию для многомиллионной таблицы mysql?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Варианты ниже. Мне нравится 5й.

    1. Можно все таки ввести неразрывный ключ, хранить его в отдельной таблице, пересчитывать его при каждом удалении/добавлении.

    2. Сегментирование по датам, по месяцам - внутри каждого сегмента своя пагинация

    3. Если не нужна возможность перехода на произвольную страницу - следующая страница это
    ... where id < $min_id limit 30
    где min_id - минимальный id на текущей странице.

    4. если число элементов на странице фиксировано - можно хранить справочную таблицу (номер страницы,стартовый id, конечный id) обновлять её при удалении/вставке/по крону

    5. применить гибридный подход: я крайне сомневаюсь что бизнес требования подразумевает offset на 900000 строк. Соответствено первые n тысяч записей можно пролистывать через offset, а дальше - по датам например. Так работает livejournal.
    Ответ написан
    1 комментарий