|
|
|
Насколько опасен или бесполезен limit n,1
|
|||
|---|---|---|---|
|
#18+
Допустим у нас есть база на 2 млн записей. Мы делаем сортированный запрос с условиями, которых бывает от трех до восьми + пару из них регулярники. Мы хотим достать запись, но не по айдишнику, а по порядковому номеру в выдаче, например, выдача дала 9000 записей и мы хотим взять 5425-ую, а какой у неё айдишник это будет по-барабану. Метод решения задачи: Код: plsql 1. Вопрос: насколько доставание всего одной записи в этом случае дорого с точки зрения подкапотной работы? Есть ли вообще хоть какой-то смысл в этом limit x,1? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 21:28:58 |
|
||
|
Насколько опасен или бесполезен limit n,1
|
|||
|---|---|---|---|
|
#18+
Lumix, такие запросы обрабатываются так: выбираются 5425 записей, и выбирается одна. т.е. по нагрузке на базу это почти как limit 5426, только с той разницей, что на клиента меньше данных передается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2014, 18:32:34 |
|
||
|
Насколько опасен или бесполезен limit n,1
|
|||
|---|---|---|---|
|
#18+
chabapokLumix, такие запросы обрабатываются так: выбираются 5425 записей, и выбирается одна. т.е. по нагрузке на базу это почти как limit 5426, только с той разницей, что на клиента меньше данных передается. да... печалька.. :-( А какие есть принципиально дешевые варианты получения i-ой позиции в запросе? Только индексированная вьюха что-ли??... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2014, 15:12:33 |
|
||
|
Насколько опасен или бесполезен limit n,1
|
|||
|---|---|---|---|
|
#18+
Lumix, нужно выделить условие, которое прописать во where. Причем, запрос должен идти только по индексированным полям. а у вас там regex... не представляю как это можно сделать. возможно, если набор регулярок ограничен, то может их на этапе вставки выполнить и писать колонку соответствущую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 22:46:43 |
|
||
|
Насколько опасен или бесполезен limit n,1
|
|||
|---|---|---|---|
|
#18+
chabapokвозможно, если набор регулярок ограничен, то может их на этапе вставки выполнить и писать колонку соответствущую Короче, кому интересно, в итоге вчера решили и сдали эту задачу так: делается запрос из него все айдишники складываются в обычный файл с паддингом 10, т. е. вот так Код: sql 1. 2. 3. 4. 5. 6. Потом перед каждым запросом айдишник записи в базе достается из файла вот так так: 1. открываем файл 2. seek'аем до i * 10 позиции 3. читаем 10 байт 4. как файл перестал быть нужен (как все воркеры отработали) убиваем файл profit! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 20:09:56 |
|
||
|
Насколько опасен или бесполезен limit n,1
|
|||
|---|---|---|---|
|
#18+
Lumix, ааа... эээ... не проще ли было сделать временную таблицу {ид,порядковый номер} и работать с ней? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2014, 04:59:38 |
|
||
|
Насколько опасен или бесполезен limit n,1
|
|||
|---|---|---|---|
|
#18+
Lumixchabapokвозможно, если набор регулярок ограничен, то может их на этапе вставки выполнить и писать колонку соответствущую Короче, кому интересно, в итоге вчера решили и сдали эту задачу так: делается запрос из него все айдишники складываются в обычный файл с паддингом 10, т. е. вот так Код: sql 1. 2. 3. 4. 5. 6. Потом перед каждым запросом айдишник записи в базе достается из файла вот так так: 1. открываем файл 2. seek'аем до i * 10 позиции 3. читаем 10 байт 4. как файл перестал быть нужен (как все воркеры отработали) убиваем файл profit! как верно заметили, чем єто отличаеться от временой таблицы? а если у неё размер будет всегда меленький ,то можно и в памяти разместить. если уже и в файл пошли, то зачем ересь делать??? айдишник у вас скажем 4 байтное число, так и пишите в файл 4байтные цисла а не фиговобайтные строки (function pack() | unpack()) незная детали задачи трудно сказать, но работать с шдд бегая по файлу на х8 байт и читать по 8 байт это сексуальное насилие над винчестером. но опять же если задача не вилика, то временая таблица и вперёд ЗЫ у меня есть временные таблицы мемори, используються для работы на дереве. вместо того чтобы помнить списки айдишников, ну или читать их из файлов временых. ЗЫЗЫ кстате, а как разруливаеться задача, чтобы два последние воркера не решили оба что удалит файл - другой воркер??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2014, 12:32:47 |
|
||
|
Насколько опасен или бесполезен limit n,1
|
|||
|---|---|---|---|
|
#18+
Значит, у вас решение - специфическое для задачи. Такое тут бы никто не предложил. О каких айдишниках может идти речь, если у вас там регэкспы? И еще непонятно, как вы вытягиваете "все айдишники" из запроса. Если селектом в отдельной транзакции - это неправильно, и в много клиентской схеме обязательно даст глюки - рано или поздно будут подмешаны чужие айдишники. А если через last_insert_id() - то это правильно, но тогда почему "айдишники", а не "айдишник"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2014, 02:00:27 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38685304&tid=1834566]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
140ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 493ms |

| 0 / 0 |
