Why not two separate queries then,
and modify the application code to combine the results?

SELECT * FROM table WHERE p1 = 'p1' ;
SELECT * FROM table WHERE p2 = 'p2' ;


On Tue, May 6, 2025 at 3:14 PM Jaco Kroon via discuss <
discuss@lists.mariadb.org> wrote:

> Hi,
>
> On 2025/05/06 16:07, Gordan Bobic wrote:
> > Is there an overwhelming reason why can you not instead search for:
> >
> > SELECT * FROM view_name WHERE p1 = 'p1' and p2 = 'p2'?
>
> The application in use configures a table name only, and assumes a
> single id column with a string value against which to match.
>
> Fixing that is going to be extremely complex (read: I don't see a way of
> achieving that, even with access to the code, was my first thought).
>
> Kind regards,
> Jaco
>
> >
> > On Tue, 6 May 2025 at 16:58, Jaco Kroon via discuss
> > <discuss@lists.mariadb.org> wrote:
> >> Hi All,
> >>
> >> So I'm stuck with an application that does something like (can't
> >> trivially modify the code):
> >>
> >> Prepare SELECT * FROM view_name WHERE id = ?
> >> Execute SELECT * FROM view_name WHERE id = 'p1-p2'
> >>
> >> The problem is that id is a compound between two individual indexes from
> >> the underlying tables, eg:
> >>
> >> CREATE VIEW AS SELECT CONCAT(k1, '-', k2) id, other, fields FROM table1,
> >> table2;
> >>
> >> Yes, the full join is on purpose, table2 will only ever have a handful
> >> (three currently) rows in it.
> >>
> >> table1 however can get "big" (only a few hundred rows, and will likely
> >> mostly be in the buffer pool on all hosts, so most likely not the worst
> >> possible situation).
> >>
> >> Is there perhaps a mechanism to get mariadb to "break down" the searched
> >> for id value to enable it hitting the underlying indexes more properly?
> >>
> >> If not this is going to be a "let's see how far it stretches" kind of
> >> scenario for the time being, or possibly see if the mariadb query cache
> >> can help.  In which case, is it possible to selectively enable the query
> >> cache on a per query basis, because as a rule we found that the query
> >> cache actually degraded performance (I believe due to lock contention).
> >>
> >> The only other option I can imagine is to create a separate table that
> >> regenerates whenever data in the source tables changes (by way of
> triggers).
> >>
> >> Kind regards,
> >> Jaco
> >>
> >> _______________________________________________
> >> discuss mailing list -- discuss@lists.mariadb.org
> >> To unsubscribe send an email to discuss-le...@lists.mariadb.org
> >
> >
> _______________________________________________
> discuss mailing list -- discuss@lists.mariadb.org
> To unsubscribe send an email to discuss-le...@lists.mariadb.org
>
_______________________________________________
discuss mailing list -- discuss@lists.mariadb.org
To unsubscribe send an email to discuss-le...@lists.mariadb.org

Reply via email to