
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
24.07.2014, 16:59:12
|
|||
|---|---|---|---|
И вновь о выборке произвольной записи |
|||
|
#18+
База MariaDB 10.10, сервер виртуальный, двухпроцессорный, 512 оперативки. Вопрос номер 1. Есть некая таблица с числом записей до 10 тысяч. Ни с чем не слинкована и не должна будет. Есть PK, аутоинкримент, int unsigned Задача - максимально быстро выбрать из нее одну произвольную запись. Есть гарантия, что дырок в аутоинкрименте не будет. Верно ли я ошибаюсь, что в данном случае разумнее на стороне php сгенерить некий произвольный id и сделать выборку типа select id from mytable where id = ValueFromPhp limit 1; Вопрос номер 2. Есть еще насколько таблиц значительно меньшего размера. До 2 тысяч записей самая крупная из них. Больше они не станут. Задача та же: максимально быстро выбрать одну произвольную запись. Гарантии, что дырок в аутоинкрименте не будет - нет. Но тут у меня нет вызовов из php, a чисто базный код. Будет ли оптимальным вот это решение или на таком количестве и order by rand нормально отработает? create function get_random_id() nondeterministic returns long begin select count(*) into @cnt from mytable where ...; set @sql=concat('select id into @id from mytable where ... limit ',rnd*@cnt,',1;'); prepare stmt from @sql; exec stmt; return @id; end; Наконец, последний вопрос: можно ли как с использованием неких фич от MariaDB ускорить выборку? Подразумевается, что будут только небольшие запросы с небольшими же обьемами выборки, но их будет много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.07.2014, 17:03:49
|
|||
|---|---|---|---|
И вновь о выборке произвольной записи |
|||
|
#18+
SELECT * FROM random JOIN ( SELECT CEIL(RAND() * (SELECT MAX(id) FROM random)) AS id ) AS r2 USING (id) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1834464]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 334ms |

| 0 / 0 |
