|
оптимизация запроса
|
|||
---|---|---|---|
#18+
всем привет ... как переписать запрос чтобы несколько раз не изпользовать одну и туже таблицу в жойне Код: plaintext 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. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.
сейчас запрос работает 23 сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2010, 14:47 |
|
оптимизация запроса
|
|||
---|---|---|---|
#18+
Во первых, желательно приводить структуру таблиц и индексов, чтобы получить качественный ответ) Во вторых, я бы такой запрос разбил на несколько удобочитаемых отдельных запросов. В третьих, если вы любите писать монстров, то используйте: круглые скобки, операторы case/and/or и будет вам счастье и монстры будут жить вечно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2010, 17:40 |
|
оптимизация запроса
|
|||
---|---|---|---|
#18+
А какая там таблица несколько раз? (извините, но такой длинный запрос парасать мозгом лень). Чисто стилистически лично предпочитаю связи для соединения писать в join, а условия фильтрации в where. Так легче читается запрос, а на план исполнения оно никак не влияет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2010, 20:12 |
|
оптимизация запроса
|
|||
---|---|---|---|
#18+
Ggg_oldА какая там таблица несколько раз? (извините, но такой длинный запрос парасать мозгом лень). Чисто стилистически лично предпочитаю связи для соединения писать в join, а условия фильтрации в where. Так легче читается запрос, а на план исполнения оно никак не влияет. почему не влияет? :) там же LEFT JOINы. Это не только на план влияет, н ои на выборку в целом :) Видимо вам сильно "лень" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2010, 19:19 |
|
оптимизация запроса
|
|||
---|---|---|---|
#18+
gda wrote: > как переписать запрос чтобы несколько раз не изпользовать одну и туже > таблицу в жойне > сейчас запрос работает 23 сек. Как бы это достаточно сложно, и к тому же не думай, что если ты этого добьёшься, то запрос станет работать быстро. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2010, 19:56 |
|
оптимизация запроса
|
|||
---|---|---|---|
#18+
gda wrote: > сейчас запрос работает 23 сек. Вот как бы костяк запроса. select count(*) FROM deal_master DM JOIN #SMUserPermission SUP(index indx_#SMUserPermission) ON SUP.deal_id = DM.deal_id JOIN tranche_master TM ON DM.deal_id = TM.deal_id Условий поиска тут тебе РОВНО НОЛЬ. Т.е. будет обрабатываться вся таблица deal_master целиком. А если #SMUserPermission является мощным фильтром для неё, для сделок, (вообще не должна, поскольку это судя по названию только фильтр по правам, он мало должен отсекать), то тебе нужно пропихивать таблицу #SMUserPermission в плане вверх. Но такой план будет не очень подходящим к каждому пользователю, я подозреваю. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2010, 20:01 |
|
|
start [/forum/topic.php?fid=55&msg=36870929&tid=2010523]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 329ms |
total: | 478ms |
0 / 0 |