Changes between Version 28 and Version 29 of QueryOptimization


Ignore:
Timestamp:
09/16/26 07:09:49 (13 days ago)
Author:
235013
Comment:

Отстранета табелата на незадржани индекси

Legend:

Unmodified
Added
Removed
Modified
  • QueryOptimization

    v28 v29  
    2828
    2929Секој поглед филтриран по агенција или по клиент почнува со договорите на таа агенција или на тој клиент. Без индекс тоа е sequential scan на целата табела `Client_Vendor_Contract` (250.000 редици, 5.652 страници) за да се задржат 47, односно 12 редици; со индексот се читаат само тие редици. Одлуката е според планот, а не според милисекундите: план што чита цела табела за неколку десетици редици е погрешен независно од големината на табелата, а индексот чини 2 MB. Останатите чекори на тие погледи (проектите на договорот, статусот, двете страни) веќе одат преку индексите од шемата: примарните клучеви и `uq_project_contract_name`, чија прва колона е `contract_id`.
    30 
    31 === Индекси што не се задржани === #not-kept
    32 
    33 Секој кандидат е креиран во трансакција што се поништува и измерен на истиот начин.
    34 
    35 ||= Индекс =||= Големина =||= Мерење =||= Причина =||
    36 || `idx_project_contract_id ON Project (contract_id)` || 15 MB || поглед 3 филтриран: 0,85 ms без, 0,82 ms со || поврзувањето договор → проекти веќе оди преку `uq_project_contract_name`; планот е ист, само индексот е потесен ||
    37 || `idx_dispute_ticket_review_id ON Dispute_Ticket (review_id)` || 3,1 MB || сите спорови на една рецензија: 9,17 ms без, 0,01 ms со || отворените спорови на рецензија (проверката при објавување и при поднесување спор) веќе ги покрива `uq_dispute_open_per_vendor_review`; читањето на сите спорови на една рецензија е ретко и 9,17 ms е прифатливо ||
    38 || `idx_pba_project_id ON Project_Budget_Audit (project_id)` || 20 MB || промените на буџет на еден проект (поглед 16): 29,5 ms без, 0,06 ms со || табелата се запишува при секоја промена на буџет, а се чита ретко; 29,5 ms е прифатливо за ревизиски преглед ||
    39 || `idx_client_industry_id ON Client (industry_id)` || 160 kB || поглед 7 филтриран: 2,65 ms без, 1,75 ms со || 968-те клиенти на една индустрија (5 % од табелата) се распоредени низ речиси сите страници, па и со индексот се читаат речиси сите ||
    40 || `idx_dispute_ticket_is_resolved ON Dispute_Ticket (is_resolved)` || 992 kB || поглед 9: ист план || условот `is_resolved = false` избира 40 % од табелата, па оптимизаторот не го користи индексот ||
    4130
    4231=== Цена при запишување === #write-cost