I am trying to perform a select on a very large table with no applicable indexes in Informix. Unfortunately it is not possible to add an applicable index by the time this project needs to be finished - there are strict procedures in place for database changes and it would take too long to get the required sign off in my organization.
The table is fragmented, and I have selected from particular partitions in Oracle databases before. Is there any way to specify the fragment in a SELECT
query?
Only indirectly...
If your search criteria identify the rows to be selected in part based on the expression(s) used in the partitioning, then Informix will perform 'fragment elimination' to avoid scanning partitions (fragments) that cannot possibly contribute to the answer. If you have round robin partitioning, then no fragment elimination is possible. If you have expression or interval fragmentation, then you can benefit from fragment elimination. (Because fragment elimination is a big win on performance, it is done whenever possible.)
Ultimately, though, if you can't put the proper indexes in place, the query performance will probably be slow as it may well require table scans and those can be slower than indexed access operations. That said, sometimes a table scan is the quickest way to process a query. It just isn't often the case.