
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