# Very slow SQL query

**URL:** https://discuss.tryton.org/t/very-slow-sql-query/7256
**Category:** Developer
**Tags:** python-sql
**Created:** [May 2, 2024, 9:48am UTC](https://discuss.tryton.org/t/very-slow-sql-query/7256 "2024-05-02T09:48:37Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![bell](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/b/c67d28/32.png) [@bell](https://discuss.tryton.org/u/bell)
#### Post date: [May 2, 2024, 9:48am UTC](https://discuss.tryton.org/t/very-slow-sql-query/7256/1 "2024-05-02T09:48:37Z")

</div>

Hi,  
I need to execute SQL query like this:

```auto
    main.join(add1, 'LEFT', condition=main.add1_id == add1.id
        ).join(add2, 'LEFT', condition=main.add2_id == add2.id
        ...
        ).join(par1, 'LEFT', condition=(main.year == par1.year)
            & (main.month == par1.month)
        ).join(par2, 'LEFT', condition=(main.year == par2.year)
            & (main.month == par2.month)
        ...
        ).select(...)

```

There are about 10 add-tables and 5 par-tables in the query. Its execution time is 8 seconds.  
I just printed out this query and executed it in `phpPgAdmin`. Its execution time is 0.4 seconds.  
Why does this query take 20 times longer to complete in Tryton-environment?

---

<div class="post-metadata">

### Author: ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)
#### Post date: [May 2, 2024, 9:59am UTC](https://discuss.tryton.org/t/very-slow-sql-query/7256/2 "2024-05-02T09:59:37Z")

</div>

See [Slow params generation with a lot of nested joins (#90) · Issues · Tryton / python-sql · GitLab](https://foss.heptapod.net/tryton/python-sql/-/issues/90)

---

<div class="post-metadata">

### Author: ![bell](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/b/c67d28/32.png) [@bell](https://discuss.tryton.org/u/bell)
#### Post date: [May 2, 2024, 10:26am UTC](https://discuss.tryton.org/t/very-slow-sql-query/7256/3 "2024-05-02T10:26:51Z")

</div>

I excluded par-tables from the query and left only add-tables. Execution time is 0.6 seconds.  
I excluded add-tables from the query and left only par-tables. Execution time is 0.2 seconds.  
What can I do to speed up my full query? The full query contains 160 params.

---

<div class="post-metadata">

### Author: ![nicoe](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/nicoe/32/2880_2.png) [@nicoe](https://discuss.tryton.org/u/nicoe)
#### Post date: [May 2, 2024, 12:16pm UTC](https://discuss.tryton.org/t/very-slow-sql-query/7256/4 "2024-05-02T12:16:32Z")

</div>

Did you try the solution provided by @ced in the previous message?

---

<div class="post-metadata">

### Author: ![bell](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/b/c67d28/32.png) [@bell](https://discuss.tryton.org/u/bell)
#### Post date: [May 2, 2024, 12:58pm UTC](https://discuss.tryton.org/t/very-slow-sql-query/7256/5 "2024-05-02T12:58:41Z")

</div>

Do you mean this?

> **[Do not test params attribute but catch exception (!19) · Merge requests ·...](https://foss.heptapod.net/tryton/python-sql/-/merge_requests/19)**
>
> Testing for params attribute multiples the computation badly in case of nested joins. It is better to just catch the AttributeError to avoid introduce a factorial execution time....

I didn’t understand how to catch the exception.

---

<div class="post-metadata">

### Author: ![nicoe](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/nicoe/32/2880_2.png) [@nicoe](https://discuss.tryton.org/u/nicoe)
#### Post date: [May 2, 2024, 2:09pm UTC](https://discuss.tryton.org/t/very-slow-sql-query/7256/6 "2024-05-02T14:09:16Z")

</div>

You should apply the patch of the Merge Request (you can get it by clicking on the “Code” button in the top right of the screen and selecting “patch”) to your `python-sql` module, or wait for a new release and update using your preferred method.

---

<div class="post-metadata">

### Author: ![bell](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/b/c67d28/32.png) [@bell](https://discuss.tryton.org/u/bell)
#### Post date: [May 2, 2024, 2:57pm UTC](https://discuss.tryton.org/t/very-slow-sql-query/7256/7 "2024-05-02T14:57:08Z")

</div>

OK. Thanks for the help.

---

<div class="post-metadata">

### Author: ![bell](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/b/c67d28/32.png) [@bell](https://discuss.tryton.org/u/bell)
#### Post date: [May 3, 2024, 12:33pm UTC](https://discuss.tryton.org/t/very-slow-sql-query/7256/8 "2024-05-03T12:33:17Z")

</div>

After updating `python-sql` and applying the patch, my full query was completed in 0.3 seconds.

---

<div class="post-metadata">

### Author: ![system](https://discuss-cdn.tryton.org/uploads/default/original/1X/c6f8ec0a40525cdcd50058c734283450a4b3d38b.png) [@system](https://discuss.tryton.org/u/system)
#### Post date: [May 4, 2024, 12:33am UTC](https://discuss.tryton.org/t/very-slow-sql-query/7256/9 "2024-05-04T00:33:48Z")

</div>

This topic was automatically closed 12 hours after the last reply. New replies are no longer allowed.
