У меня на Nav 3.6 + SQL2000
Код
GLEntry.RESET;
GLEntry.SETCURRENTKEY("Transaction No.");
GLEntry.SETRANGE("G/L Account No.",'60007');
GLEntry.SETRANGE("Posting Date",010107D,310307D);
IF GLEntry.FIND('-') THEN ;
отрабатывал в разы быстрее, чем
GLEntry.RESET;
GLEntry.SETRANGE("G/L Account No.",'60007');
GLEntry.SETRANGE("Posting Date",010107D,310307D);
IF GLEntry.FIND('-') THEN ;
Хотя выбор индекса действительно осуществлялся независимо от GLEntry.SETCURRENTKEY("Transaction No.").
Точнее если закомментирована строка GLEntry.SETRANGE("Posting Date",010107D,310307D);, то индекс по "Transaction No.",
а если нет, то индекс, который включал оба фильтруемых поля.
Во втором случае всегда использовался кластерный индекс. весьма небыстро отрабатывал. P.S. 17 таблица более 3 млн записей
|