Junior — Middle
Ինչ կարող է հանգեցնել այն բանին, որ PostgreSQL-ը չօգտագործի ինդեքսը որոշ դաշտի որոնման ժամանակ?
sobes.tech AI
Պատասխան AI-ից
PostgreSQL-ը կարող է մի քանի պատճառներով չօգտագործել ինդեքսը որոշակի դաշտով որոնելիս:
- Նվազ ընտրողականություն: եթե որոնման պայմանը վերադարձնում է մեծ տոկոս տողերից, պլանավորողը կարող է ընտրել սերիական սկան, քանի որ դա ավելի արդյունավետ է:
- Տվյալների տիպեր կամ գործողություններ, որոնք չեն համատեղելի ինդեքսի հետ: օրինակ, ֆունկցիաներ կամ գործողություններ, որոնք չեն աջակցում ինդեքսին (օրինակ,
LIKE '%pattern') կամ տվյալների տիպերի անհամապատասխանություն: - Ստատիստիկայի բացակայություն կամ հնացած ստատիստիկա: եթե աղյուսակի ստատիստիկան թարմացված չէ (
ANALYZE), պլանավորողը կարող է սխալ որոշում ընդունել: - Ելք արտահայտությունների օգտագործում, որոնք չեն ընդգրկված ինդեքսում: օրինակ, հաշվարկված դաշտի որոնում առանց համապատասխան ֆունկցիոնալ ինդեքսի:
- Կոնֆիգուրացիոն պարամետրեր: օրինակ, շատ բարձր
random_page_costարժեքը կարող է ազդել պլանի ընտրության վրա:
Օրինակ՝ եթե ձեր name դաշտում կա ինդեքս, բայց հարցումը օգտագործում է WHERE LOWER(name) = 'abc', և ինդեքսը ֆունկցիոնալ չէ LOWER(name)-ի վրա, ինդեքսը չի օգտագործվի: