Graham Leggett wrote: > Derek Atkins wrote: > >> I think the question was more: Does every table have to HAVE >> a primary key? Yes, the primary key must be unique, but what >> if a table has no primary key? Is that still okay? > > It's perfectly ok, yes - but primary keys are used heavily for > optimisation. Without them, performance will suffer, particularly > while generating reports. > > Regards, > Graham > -- Only if the primary key is, in fact, on a field used to look records up for reports. In this case (slots and recurrences), the primary key field was constructed only for the purpose of being a primary key. To my knowledge, it is not actually used to look up any records.
I am going to try creating secondary (not primary) indices on other fields and see how that affects MySql's performance in the register opening queries. In the case of slots, this will be the obj_guid field. This is NOT unique and because an object can have many slots. Therefore, it cannot be a primary key. However, it can improve performance. I am also going to try creating a secondary index on the splits.account_guid field. Also not unique. It is used in the register opening queries to look up splits. I expect these two indices will improve performance. I'm just not sure it will be enough for the sub-query forms of the queries to provide acceptable performance on MySql. Mark _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel