CLEAR CREATE CURSOR cursorTest (CharField C) INSERT INTO cursorTest VALUES ('a') SYS(3054,11) SET COLLATE TO "MACHINE" INDEX ON CharField TAG tagMach COLLATE "MACHINE" * Now the Engine uses the tagMach index for the = and == and LIKE comparison SELECT "= " comparison,COUNT(*) FROM cursorTest WHERE CharField ='A'; UNION ALL ; SELECT "==" comparison,COUNT(*) FROM cursorTest WHERE CharField =='A'; UNION ALL ; SELECT "LK" comparison,COUNT(*) FROM cursorTest WHERE CharField LIKE 'A'; INTO CURSOR results LIST && Expected 0,0,0 SET COLLATE TO "GENERAL" * Now the Engine not found a GENERAL index, and none is optimized SELECT "= " comparison,COUNT(*) FROM cursorTest WHERE CharField ='A'; UNION ALL ; SELECT "==" comparison,COUNT(*) FROM cursorTest WHERE CharField =='A'; UNION ALL ; SELECT "LK" comparison,COUNT(*) FROM cursorTest WHERE CharField LIKE 'A'; INTO CURSOR results LIST && Expected 1,1,1 SELECT cursorTest INDEX ON CharField TAG tagGeneral COLLATE "GENERAL" * Now the Engine uses the tagGeneral index for the = and == comparison, * the LIKE is optimized with tagGeneral, but LIKE uses MACHINE rules! SELECT "= " comparison,COUNT(*) FROM cursorTest WHERE CharField ='A'; UNION ALL ; SELECT "==" comparison,COUNT(*) FROM cursorTest WHERE CharField =='A'; UNION ALL ; SELECT "LK" comparison,COUNT(*) FROM cursorTest WHERE CharField LIKE 'A'; INTO CURSOR results LIST && Expected 1,1,1 SYS(3054,0) CLOSE TABLES ALLFabio