Performance k由于所需内存超过配置的限制,磁盘上的排序速度较慢。您可能希望尝试增加TempCacheLimit设置(请注意,这可能会导致内存使用量的大幅增加,因为每个连接都是如此!)您的计划中有“natural”,这意味着整个数据集都是从磁盘读取的。是否尝试为所需字段

Performance k由于所需内存超过配置的限制,磁盘上的排序速度较慢。您可能希望尝试增加TempCacheLimit设置(请注意,这可能会导致内存使用量的大幅增加,因为每个连接都是如此!)您的计划中有“natural”,这意味着整个数据集都是从磁盘读取的。是否尝试为所需字段,performance,devexpress,firebird,xtragrid,Performance,Devexpress,Firebird,Xtragrid,k由于所需内存超过配置的限制,磁盘上的排序速度较慢。您可能希望尝试增加TempCacheLimit设置(请注意,这可能会导致内存使用量的大幅增加,因为每个连接都是如此!)您的计划中有“natural”,这意味着整个数据集都是从磁盘读取的。是否尝试为所需字段创建索引?了解视图中的表结构和查询会很有帮助。@Harriv NATURAL并不总是坏的(有时是不可避免的)。不过,如果没有order by,知道计划是什么就好了。谢谢你的建议标记,我查看了TempCacheLimit设置。为了进行测试,我将限


k由于所需内存超过配置的限制,磁盘上的排序速度较慢。您可能希望尝试增加
TempCacheLimit
设置(请注意,这可能会导致内存使用量的大幅增加,因为每个连接都是如此!)您的计划中有“natural”,这意味着整个数据集都是从磁盘读取的。是否尝试为所需字段创建索引?了解视图中的表结构和查询会很有帮助。@Harriv NATURAL并不总是坏的(有时是不可避免的)。不过,如果没有order by,知道计划是什么就好了。谢谢你的建议标记,我查看了TempCacheLimit设置。为了进行测试,我将限制提高到4GB,并发现查询使用了2.1GB的RAM。这从查询中节省了大约一秒钟的时间,但是我们在任何时候都有大约40个用户在使用数据库,因此允许这样的内存量可能是不可行的。我正在做的所有测试都是在我的本地开发环境上进行的,通常速度更快。在删除order by语句时,我已使用计划更新了问题。表结构也有帮助吗?要快速运行,查询应该使用排序字段上的索引(
poh.id
),但它使用的是以下索引:
FK\u PURCHASE\u ORDER\u HEADER\u 1
。那么,这是什么索引?您是否为列
poh.id
建立了索引?如果这样做,请尝试更新所有索引的统计信息:
SET statistics INDEX\u NAME
select first 128 * from VW_PURCHASE_ORDER_LIST

Plan
PLAN JOIN (VW_PURCHASE_ORDER_LIST LEVY BT NATURAL, VW_PURCHASE_ORDER_LIST M INDEX (PK_MATTER), VW_PURCHASE_ORDER_LIST LEVY F INDEX (PK_B_BUDGET_LEVY_FREQUENCY), VW_PURCHASE_ORDER_LIST BT_FHC INDEX (PK_BT_FINANCIAL_HEALTH_CHECK), VW_PURCHASE_ORDER_LIST BD INDEX (PK_BT_BUILDING_DETAILS), VW_PURCHASE_ORDER_LIST USR_STRATAMANAGER INDEX (PK_USER_DETAIL), VW_PURCHASE_ORDER_LIST POH INDEX (FK_PURCHASE_ORDER_HEADER_1), VW_PURCHASE_ORDER_LIST PS INDEX (PK_LK_PO_PAID_STATUS), VW_PURCHASE_ORDER_LIST POS INDEX (PK_LK_PURCHASE_ORDER_STATUS), VW_PURCHASE_ORDER_LIST LM INDEX (UNQ1_P_ORDER_MODIFIED_DATE), VW_PURCHASE_ORDER_LIST SUPPLIER INDEX (PK_CONTACT), VW_PURCHASE_ORDER_LIST USR_CREATED INDEX (PK_USER_DETAIL), VW_PURCHASE_ORDER_LIST USR_MODIFIED INDEX (PK_USER_DETAIL), VW_PURCHASE_ORDER_LIST USR_APPROVED INDEX (PK_USER_DETAIL))

------ Performance info ------
Prepare time = 16ms
Execute time = 15ms
Avg fetch time = 0.44 ms
Current memory = 36,398,384
Max memory = 0
Memory buffers = 2,048
Reads from disk to cache = 172
Writes from cache to disk = 0
Fetches from cache = 2,654
CREATE VIEW VW_PURCHASE_ORDER_LIST(
    ID,
    ID_BUILDING,
    ID_SUPPLIER,
    ID_STATUS,
    ID_USER_CREATED,
    ID_USER_MODIFIED,
    DATE_ORDER,
    DATE_CREATED,
    DATE_MODIFIED,
    DATE_PAYMENT_COMMITMENT,
    ISARCHIVED,
    JOURNAL,
    NOTES,
    PO_NUMBER,
    SUPPLIER_INVOICE_NUMBER,
    TERMS_IN_DAYS,
    STRATA_PLAN_NUMBER,
    BUILDING_DISPLAY,
    SUPPLIER_DISPLAY,
    USERNAME_CREATED,
    USERNAME_MODIFIED,
    STATUS_DESCRIPTION,
    ID_USER_APPROVED,
    USERNAME_APPROVED,
    ID_STRATA_MANAGER,
    USERNAME_STRATAMANAGER,
    DATE_LATEST_PAYMENT_BANKED,
    INSURANCE_PREMIUM,
    NEXT_DATE_RENEWAL,
    COUNT_UNALLOCATED_BANK_TRANS,
    SUM_UNALLOCATED_BANK_TRANS,
    LIST_PAYMENT_TRANS_TYPE,
    LIST_PAYMENT_ACCOUNT,
    LIST_PAYMENT_NUMBER,
    ID_PAID_STATUS,
    PAID_STATUS_DESC,
    LIST_DEBIT_ACCOUNTS,
    LIST_DETAIL_AMOUNT,
    ADMIN_LEVY_YEAR_END_DATE,
    LEVY_ARREARS,
    NEXT_ADMIN_LEVY_DATE,
    ADMIN_LEVY_FREQUENCY,
    PAYABLE_NOTES)
AS
select
  poh.id,
  poh.id_building,
  poh.id_supplier,
  poh.id_status,
  poh.id_user_created,
  poh.id_user_modified,
  poh.date_order,
  poh.date_created,
  MAXVALUE(lm.date_modified, levy.modified_date, bd.modified_date),
  poh.date_payment_commitment,
  poh.isarchived,
  poh.journal,
  poh.notes,
  poh.order_number,
  poh.supplier_invoice_number,
  poh.terms_in_days,
  m.matter_code,
  m.matter_display,
  supplier.contact_display,
  usr_created.user_name,
  usr_modified.user_name,
  pos.description,
  poh.id_user_approved,
  usr_approved.user_name,
  bd.id_strata_manager,
  usr_stratamanager.user_name,
  poh.date_latest_payment_banked,
  m.sum_insurance_premium,
  m.next_date_renewal,
  bt_fhc.count_unallocated_bank_trans,
  bt_fhc.sum_unallocated_bank_trans,
  lm.list_payment_trans_type,
  lm.list_payment_account,
  lm.list_payment_number,
  poh.id_paid_status,
  ps.description,
  lm.list_debit_accounts,
  lm.list_detail_amount,
  levy.admin_levy_year_end_date,
  levy.levy_arrears,
  levy.next_admin_levy_date,
  levy.admin_frequency,
  bd.payable_notes
from purchase_order_header poh
join purchase_order_modified_date lm on lm.id_purchase_order = poh.id
join lk_purchase_order_status pos on pos.id = poh.id_status
join matter m on m.matter_id = poh.id_building
join contact supplier on supplier.contact_id = poh.id_supplier
join user_detail usr_created on usr_created.user_id = poh.id_user_created
join user_detail usr_modified on usr_modified.user_id = poh.id_user_modified
join user_detail usr_approved on usr_approved.user_id = poh.id_user_approved
join bt_building_details bd on bd.id = m.matter_id
join user_detail usr_stratamanager on usr_stratamanager.user_id = bd.id_strata_manager
join BT_FINANCIAL_HEALTH_CHECK bt_fhc on bt_fhc.id = poh.id_building
join lk_po_paid_status ps on ps.id = poh.id_paid_status
join VW_BT_LEVY levy on levy.Id = poh.id_building
where poh.id <> 0
;
order by  id || '' asc
order by id + 0 asc