>use v_QuickSearch in 0 nodata >select v_QuickSearch > >&& do the test twice, once without the indexes and the second time with the indexes. >&& look at the Rushmore output > >&& create an index for all fields that will be used in the join expressions >index on cTrans_PK tag cTrans_PK >index on ..... > >ViewParameter1 = ... >ViewParameter2 = ... >... >ViewParametern = ... > >=Requery() && pull the data in > >&& for the test >set deleted Off >=sys(3054,11) > >SELECT v_QuickSearch.*, ; >> IIF(EMPTY(v_QuickSearch.cResolution_Codes_Fk) OR ; >> ISNULL(v_QuickSearch.cResolution_Codes_Fk), ; >> v_QuickSearch.cStatus_Codes_Fk, ; >> v_QuickSearch.cResolution_Codes_Fk) AS cVisCodes_Fk, ; >> Employee_queue_schedules.cemployee_queue_schedules_pk, USERS.cUserID ; >> FROM v_QuickSearch ; >> INNER JOIN mmVisCollect!Trans_employees_queues ; >> ON v_QuickSearch.cTrans_PK = Trans_employees_queues.ctrans_fk ; >> INNER JOIN mmVisCollect!usgrlink ; >> ON Trans_employees_queues.ccommission_owner_usgrlink_fk = usgrlink.cusgrlink_pk ; >> INNER JOIN mmVisCollect!Employee_queue_schedules ; >> ON Trans_employees_queues.ctrans_employees_queues_pk = Employee_queue_schedules.ctrans_employees_queues_fk ; >> INNER JOIN mmVisCollect!USERS ; >> ON USERS.iid = usgrlink.iuserid; >> WHERE Trans_employees_queues.iactive_flag = 1 ; >> AND Employee_queue_schedules.iactive_flag = 1 ; >> INTO CURSOR cTempResult > > >=sys(3054,0) >>________________________________________________________________________________________________________________
>>*---------------------- Location Section ------------------------ >>* Library: Aquicksearchbiz.vcx >>* Class: Quicksearchobject >>* Method: CreateFinalResult() >>*----------------------- Usage Section -------------------------- >>*) Description: >>*) >> >>* Scope: Public >>* Parameters: >>*$ Usage: >>*$ >>* Returns: >>*--------------------- Maintenance Section ---------------------- >>* Change Log: >>* CREATED 01/24/2005 - NN >>* MODIFIED *-- CHANGE - NN - January 25, 2005 - 14:31:02 >>*---------------------------------------------------------------- >>LOCAL lnReccount, loSelect, cStatus, cUserID, lnSeconds >>lnSeconds = SECONDS() >>SET TALK OFF >>SET NOTIFY OFF >> >>STORE "" TO cStatus, cUserID >> >>IF VARTYPE(m.plStop) <> "L" >> LOCAL plStop >> plStop = .F. >>ENDIF >> >>SELECT v_QuickSearch.*, ; >> IIF(EMPTY(v_QuickSearch.cResolution_Codes_Fk) OR ; >> ISNULL(v_QuickSearch.cResolution_Codes_Fk), ; >> v_QuickSearch.cStatus_Codes_Fk, ; >> v_QuickSearch.cResolution_Codes_Fk) AS cVisCodes_Fk, ; >> Employee_queue_schedules.cemployee_queue_schedules_pk, USERS.cUserID ; >> FROM v_QuickSearch ; >> INNER JOIN mmVisCollect!Trans_employees_queues ; >> ON v_QuickSearch.cTrans_PK = Trans_employees_queues.ctrans_fk ; >> INNER JOIN mmVisCollect!usgrlink ; >> ON Trans_employees_queues.ccommission_owner_usgrlink_fk = usgrlink.cusgrlink_pk ; >> INNER JOIN mmVisCollect!Employee_queue_schedules ; >> ON Trans_employees_queues.ctrans_employees_queues_pk = Employee_queue_schedules.ctrans_employees_queues_fk ; >> INNER JOIN mmVisCollect!USERS ; >> ON USERS.iid = usgrlink.iuserid; >> WHERE Trans_employees_queues.iactive_flag = 1 ; >> AND Employee_queue_schedules.iactive_flag = 1 ; >> INTO CURSOR cTempResult >> >>SELECT cTempResult.*, VisCodes.cCode_Description AS cStatus ; >> FROM cTempResult INNER JOIN mmVisCollect!VisCodes ; >> ON cTempResult.cVisCodes_Fk = VisCodes.cVisCodes_Pk ; >> INTO CURSOR cResult >> >>USE IN SELECT('cTempResult') >>SELECT c_QuickSearch >>APPEND FROM DBF('cResult') FOR NOT m.plStop >>USE IN SELECT('cResult') >>GO TOP IN c_QuickSearch >> >>IF m.plStop >> THIS.EmptySearchResult() && Search was cancelled >>ENDIF >> >>lnReccount = RECCOUNT("c_QuickSearch") >> >>=MESSAGEBOX("Populating cursor took " + TRANSFORM(SECONDS() - m.lnSeconds) + " seconds") >> >>RETURN m.lnReccount