Subject Re: [firebird-support] Re: Wish list
Author Alexandre Benson Smith
develop111 wrote:

>Hi,
>
>OK, here is the suggestion/wish.
>
>We currently have a complex database structure and a lot of
>information (almost access rights) are all managed directly into
>memory. So, we often have to use the clause "IN" in our queries such
>as:
>
>SELECT * FROM EMPLOYEES WHERE EMPLOYEE_ID IN (Item1, Item2,...
>Item1500);
>
>The problem is that the "IN" clause has a limitation of 1500 items.
>So, it gives us a lot of problems.
>
>Do you know if that limitation could be removed in a next version of
>Firebird ?
>
>I already know that I could use the "IN" clause in sub-queries but
>this way is not good enough for us.
>
>Thanks to all.
>
>
Hi,

This question was discussed sometimes on the list, take a look on the
history, to see a lot of thoughts...

Did you tried to insert these memory values to a table, and make a join
instead of an "in" ?

insert into My_Relation_Table values(1);

insert into My_Relation_Table values(2);

insert into My_Relation_Table values(3);
...

insert into My_Relation_Table values(9999);

SELECT
*
FROM
Employees
join My_Relation_Table on (My_Relation_Table.EmployeeID = Employees.EmployeeID)

The limit will be vanished and I think you will have a better performance...

You could use CURRENT_TRANSACTION and other system variables to
distinguish between diferente users/process

See you !

--

Alexandre Benson Smith
Development
THOR Software e Comercial Ltda.
Santo Andre - Sao Paulo - Brazil
www.thorsoftware.com.br