AnsweredAssumed Answered

Minimal Indexing Find Issues

Question asked by PaulSmith_2 on Jul 1, 2014
Latest reply on May 12, 2015 by TSGal

Summary

Minimal Indexing Find Issues

Product

FileMaker Pro

Version

13

Operating system version

MacOS 10.7.5

Description of the issue

A find on a Minimal index field containing only single-word data takes the same time as a "No Index" field.

Possibly related: http://forums.filemaker.com/posts/ac07f9929e

Test file available

Also verified issue on FMP12

It seems Find is not using the index, or the index is not populated properly.

Steps to reproduce the problem

1.) Create an field with minimal indexing
2.) Create records with that field filled with *single word* unique values
- I used GetContainerAttribute ( Get ( UUID ) , "MD5" ) and a script to do this
3.) Create a script that times a find request on that field (of an existing value)
- I tried both the double-equal "exact match" as well as other find operators
- I used a variable of $start and $end for Get ( CurrentTimeUTCMilliseconds ) pre/post the "Perform Find" step.
4.) Compare results to similar process on "No Index" field
5.) Campare results to similar process on "Full Index" field
6.) Compare results to similar process on "Minimal Index" with a word-separator appended to the field data.

Expected result

I expect the same result (for me, about 8ms) as other Indexed finds.

Actual result

I got the same result (for me, about 45ms & proportional to record count) as the "No Index" find.
(All fields had "automatically create indexes" turned off.)

Exact text of any error message(s) that appear

Excerpt from Recovery Log (table called ShortTextField, an index is there):

Timestamp,Message
"2014-07-01 20:32:18.190 -0400","Recovery of schema skipped"
"2014-07-01 20:32:18.190 -0400","Recovering indexes for table 'LongTextFields'"
"2014-07-01 20:32:22.738 -0400","  Rebuilt value index for field 'Data Index Minimal'; 100000 item(s) now exist, difference from old index is 0"
"2014-07-01 20:32:44.353 -0400","  Rebuilt value index for field 'Data Index Full'; 100000 item(s) now exist, difference from old index is 0"
"2014-07-01 20:32:44.354 -0400","  Rebuilt word index for field 'Data Index Full'; 264893 item(s) now exist, difference from old index is 0"
"2014-07-01 20:32:44.355 -0400","Recovering indexes for table 'NumberFields'"
"2014-07-01 20:32:50.848 -0400","  Rebuilt value index for field 'Data Index Minimal'; 100000 item(s) now exist, difference from old index is 0"
"2014-07-01 20:32:56.753 -0400","  Rebuilt value index for field 'Data Index Full'; 100000 item(s) now exist, difference from old index is 0"
"2014-07-01 20:32:56.755 -0400","Recovering indexes for table 'ShortTextFields'"
"2014-07-01 20:33:29.798 -0400","  Rebuilt value index for field 'Data Index Minimal'; 100000 item(s) now exist, difference from old index is 0"
"2014-07-01 20:34:22.444 -0400","  Rebuilt value index for field 'Data Index Full'; 100000 item(s) now exist, difference from old index is 0"
"2014-07-01 20:34:22.445 -0400","  Rebuilt word index for field 'Data Index Full'; 100000 item(s) now exist, difference from old index is 0"
"2014-07-01 20:34:22.446 -0400","Recovering indexes for table 'Overview'"
"2014-07-01 20:34:22.461 -0400","Recovery of custom function catalog skipped"

Workaround

Append a word-divider to the field.
Use Full Indexing on the field.

Outcomes