Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
UNON и один COUNT или SELECT COUNT (SEL COUNT) + (SEL COUNT) + (SEL COUNT)
|
|||
|---|---|---|---|
|
#18+
Не хочу очень подробно все расписывать. Будет очень нудно и запутано. Поэтому постараюсь кратко, но понятно. Описание словами; Запрос возвращает количество комментов пользоватеоя. Комменты считаются с учетом параметров доступа к ПОСТУ, и с учетом доступа возможности КОММЕНТИРОВАНИЯ, а также с учетом "дружеских связей" (я у пользователя в друзьях ИЛИ пользователь у меня в друзьях - в БД есть разница между этими понятиями). Например: У пользоватлеь1 есть пост с доступом только для друзей. Когда Польователь1 и пользователь2 БЫЛИ друзьями, то пользователь2 оставлял комменты под постом пользователя1. Но потом пользователь1 и пользователь2 перестали дружить. С этого момента комменты пользователя2 под постом пользователя1 (пост только для друзей, а они уже не друзья), при просмотре СВОИХ комментов (пользователь2 смотрит свои комменты), комменты пользователя2 под постом пользователя1 (ранее они БЫЛИ друзьями) НЕ СЧИТАЮТСЯ. И в дальнейшем не будут показаны. Это я описал словами тот "кошмар" что в запросе. --- ОтакаяВот логика. Все это работает., НО.. Есть вопрос: Какой запрос более эффективен? Тот что плюсует каунты Код: sql 1. или (тут есть проблема. Я незнаю как сделать COUNT полученных строк) Код: sql 1. --- 1 запрос полностью с пояснениями Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 2 запрос с UNION без подробного пояснения Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. Если UNION более ресурсоемкая операция, то надо использовать первый запрос. Но если второй (с UNION`ами) будет легче для системы, то предпочтительней его использовать. Но я не знаю как в нем сделать КАУНТ строк. Желательно в коде обойтись БЕЗ оличества возвращаемых строк, а напрямую получить КОЛИЧЕСТВО. --- COUNT(*) COUNT(FEILD) уже знаю http://www.sql.ru/forum/1265770/count-ili-count-index-field . --- или я слишком дотошно подхожу к запросам. Можно же делать как нибудь, чтоб оно как-то работало. На что нужно обращать внимание в explain ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2017, 22:53 |
|
||
|
UNON и один COUNT или SELECT COUNT (SEL COUNT) + (SEL COUNT) + (SEL COUNT)
|
|||
|---|---|---|---|
|
#18+
свои*, своих*, моих*, мои*, я* - это залогиненный пользователь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2017, 23:00 |
|
||
|
UNON и один COUNT или SELECT COUNT (SEL COUNT) + (SEL COUNT) + (SEL COUNT)
|
|||
|---|---|---|---|
|
#18+
вот запрос с union Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 00:29 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39490420&tid=1830537]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 358ms |

| 0 / 0 |
