LINUX.ORG.RU

MySQL, большая таблица


0

0

Решил проверить поведение MySQL () на большой таблице. Сама табличка простая - ключ (INT) и текстовое поле VARCHAR(50). Циклом создал 10.000.000 записей.

Делаю простейший запрос, вида

SELECT * FROM <таблица> LIMIT i, 50;

где i - подставляется. Наблюдаю за изменением времени обработки запроса. В начале таблицы (пока i маленькие) время обработки порядка 0.02 сек. На последних записях время доходит до 40 сек. Это лечится или уже даже просто не "полистаешь" такие объёмы?

★★★★★

Re: MySQL, большая таблица

Да, забыл написать. MySQL - 4.1.20.

atrus ★★★★★ ()

Re: MySQL, большая таблица

а индекс по ключу создал, т.е. указал, что ключ - действительно ключ? :)

Pi ★★★★★ ()
Ответ на: Re: MySQL, большая таблица от friday

Re: MySQL, большая таблица

> судя по описанию, проблема действительно в отсутствии индекса

А какой индекс нужен? У него "LIMIT x, 50"... Это значит, что будут просматриваться x+50 записей, и из них выбираться последние 50.

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

(Если ты хочешь чтобы оно сначала x записей пробежало по индексу, а потом за записями номер x+1...x+50 лазало в таблицу, то такое вроде не поддерживается)

gods-little-toy ★★★ ()
Ответ на: Re: MySQL, большая таблица от Pi

Re: MySQL, большая таблица

> а индекс по ключу создал

По какому? PRIMARY индекс есть. А по текстовому полю я пока отбирать не пробовал. Кстати, SELECT * FROM ... WHERE ID=чисто - работает шустро, даже если номер идшника из последних.

atrus ★★★★★ ()
Ответ на: Re: MySQL, большая таблица от roller

Re: MySQL, большая таблица

правильно же! как до меня раньше не допёрло!

мускул тормозит правильно, т.к. запрос сделан "чтоб тормозило"

Pi ★★★★★ ()

Re: MySQL, большая таблица

Может в вашем случае больше подойдут курсоры (если MySQL их умеет)?

saper ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.