|
|
|
Limit - есть ли что после?
|
|||
|---|---|---|---|
|
#18+
limit выводит 10 записей(к примеру) в самой выборке без limit может быть больше, а может и не быть если записей всегда больше 10 то можно добавлять строку типа "показана не вся выборка" как определить что лимит обрезал набор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 18:12:07 |
|
||
|
Limit - есть ли что после?
|
|||
|---|---|---|---|
|
#18+
1) FOUND_ROWS() 2) Делать LIMIT 11 (реально отображать только 10 или 11 - зависит от задачи). Если выбрано 11 записей - выводить уведомление "в выборке более 10 записей". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 18:18:28 |
|
||
|
Limit - есть ли что после?
|
|||
|---|---|---|---|
|
#18+
miksoft, второй вариант по быстродействию выигрывает вопрос - как можно извернуться, чтоб это было реализовано в 1 запросе ? без FOUND_ROWS() , точнее без SQL_CALC_FOUND_ROWS, который пересчитывает всё. типа union по условию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 18:54:01 |
|
||
|
Limit - есть ли что после?
|
|||
|---|---|---|---|
|
#18+
вадяmiksoft, второй вариант по быстродействию выигрывает вопрос - как можно извернуться, чтоб это было реализовано в 1 запросе ? без FOUND_ROWS() , точнее без SQL_CALC_FOUND_ROWS, который пересчитывает всё. типа union по условиюНу так второй вариант - и есть в одном запросе. Есть еще третий вариант - выполнить отдельный запрос с COUNT(*). Но шансов, что он окажется быстрее первых двух практически нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 18:57:42 |
|
||
|
Limit - есть ли что после?
|
|||
|---|---|---|---|
|
#18+
я об таком Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 99999 - это для проверки...( в таблице заведомо меньше 99999 записей) при этом выведет пустую строку если поставить вмето 99999 - 10 то последней строкой выведет --- как можно избавиться от пустой строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 19:14:34 |
|
||
|
Limit - есть ли что после?
|
|||
|---|---|---|---|
|
#18+
вадякак можно избавиться от пустой строки?WHERE или HAVING И UNION замените на UNION ALL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 19:16:06 |
|
||
|
Limit - есть ли что после?
|
|||
|---|---|---|---|
|
#18+
типа так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. а это не выглядит слишком извращённо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 19:27:40 |
|
||
|
Limit - есть ли что после?
|
|||
|---|---|---|---|
|
#18+
вадяа это не выглядит слишком извращённо?Чуток есть. Ибо проблему отображения должен решать клиент, а не SQL-запрос. Но если клиент управлению не поддается, то пойдет. Хотя можно и проще: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Правда, не уверен на 100%, не проверял. Сортировку не забудьте указать, без нее LIMIT - рулетка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 19:44:37 |
|
||
|
Limit - есть ли что после?
|
|||
|---|---|---|---|
|
#18+
авторЧуток есть. Ибо проблему отображения должен решать клиент, а не SQL-запрос. вот пока и оцениваю, что оптимальнее авторНо если клиент управлению не поддается, то пойдет. клиент поддаётся, но если можно одним инструментом - почему не сделать одним :) авторЧуток есть. при такой оценке можно использовать :) в данном случае сортировка побоку, лишь бы быстрее отработало. если я понял работу limit - просто перестаёт отбор при достижени заданного количества? (это без сортировки) просто по выборке по расположению данных на диске? авторХотя можно и проще:SET @a = 0; Код: sql 1. 2. 3. 4. 5. 6. 7. 8. а где тут индикация о наличии данных после 10 строк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 20:00:04 |
|
||
|
Limit - есть ли что после?
|
|||
|---|---|---|---|
|
#18+
вадяа где тут индикация о наличии данных после 10 строк?А где она тут - 17343849 ? Как я понял, предполагается потом в переменную @a посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 21:34:21 |
|
||
|
Limit - есть ли что после?
|
|||
|---|---|---|---|
|
#18+
вот это SET @a = 0; SELECT e.name FROM (SELECT f.name FROM (SELECT goods.name, @a := @a + 1 AS a FROM goods LIMIT 11) f UNION ALL SELECT IF(@a > 99999, '---', NULL)) AS e WHERE NOT ISNULL(e.name) если вместо 99999 поставить 10 - то при наличии 11 записей выведется ---, иначе (10 и меньше) null, который отсечётся WHERE NOT ISNULL(e.name) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 21:56:34 |
|
||
|
Limit - есть ли что после?
|
|||
|---|---|---|---|
|
#18+
меня смущает такая вложенность запросов, хотя при 11 записях все они , наверно, обработаются в памяти? заметных тормозов не будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 22:00:05 |
|
||
|
Limit - есть ли что после?
|
|||
|---|---|---|---|
|
#18+
вадяпри наличии 11 записей выведется ---,где ж оно выведется, если WHERE отсечет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 22:38:21 |
|
||
|
Limit - есть ли что после?
|
|||
|---|---|---|---|
|
#18+
miksoftвадяпри наличии 11 записей выведется ---,где ж оно выведется, если WHERE отсечет? а ты проверь :) если @a >10 select после union выведет ---, если @a<=10 выведет null вот этот null и отсечет where "---" = "есть ещё записи" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 23:47:00 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38895173&tid=1833502]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 322ms |

| 0 / 0 |
