Jadvalni to'liq skanerlash - Full table scan

A to'liq jadvalni skanerlash (a nomi bilan ham tanilgan ketma-ket skanerlash) - bu skanerlash ma'lumotlar bazasi har birida qator ning stol ketma-ket (ketma-ket) tartibda o'qiladi va duch kelgan ustunlar shartning to'g'riligi uchun tekshiriladi.[1] Stolni to'liq skanerlash [2] odatda juda ko'pligi sababli jadvalni skanerlashning eng sekin usuli hisoblanadi I / O diskdan talab qilinadigan o'qish, bu bir nechta qidiruvlardan iborat va qimmat diskdan xotira o'tkazmalariga.

Umumiy nuqtai

Ma'lumotlar bazasida bunday bo'lmagan so'rov indekslangan natijada jadval to'liq skanerlanadi, ma'lumotlar bazasi jadvalning har bir yozuvini qayta ishlaydi va berilgan talablarga javob beradigan barcha yozuvlarni topadi. So'rov jadvaldan bir necha qatorni tanlasa ham, butun jadvaldagi barcha qatorlar tekshiriladi. Bu odatda suboptimal ishlashga olib keladi, lekin juda kichik jadvallar bilan yoki indekslarni yangilab turish xarajatlari yuqori bo'lganda qabul qilinishi mumkin.

Optimizator to'liq jadvalni skanerlashni ko'rib chiqganda[3]

Tanlashda eng muhim omil tezlikka bog'liq. Bu shuni anglatadiki, jadvalni to'liq skanerlash eng tezkor bo'lganda va boshqa kirish yo'lidan foydalana olmaganda ishlatilishi kerak. Bir nechta to'liq jadvalni skanerlash misollari quyidagicha.

  • Indeks yo'q

Optimizator jadvalni to'liq tekshirishni ishlatishi kerak, chunki indeks mavjud emas.

  • Kam sonli qatorlar

Jadvalni to'liq skanerlash narxi kichik jadval tufayli indeks oralig'ini skanerlashdan kam.

  • So'rov SELECT COUNT (*) ishlov berilganda, ustun ichida nulllar mavjud edi

So'rov odatdagi indeksdagi null ustunlar sonini hisoblash. Biroq, SELECT COUNT (*) nol ustunlar sonini hisoblab bo'lmaydi.

  • So'rov tanlanmagan

Qaytish qatorlari soni juda katta va butun jadvalda deyarli 100% ni tashkil qiladi. Ushbu qatorlar tanlanmagan.

  • Jadval statistikasi yangilanmaydi

Jadvaldagi qatorlar soni oldingisiga qaraganda ko'proq, ammo jadval statistikasi hali yangilanmagan. Optimizator indeksdan foydalanish tezroq ekanligini to'g'ri baholay olmaydi.

  • Jadval yuqori darajadagi parallellikka ega

Parallelizm jadvalining yuqori darajasi optimizatorni haqiqiy yo'ldan chalg'itadi, chunki optimallashtiruvchi jadvalni to'liq skanerdan foydalanadi.

  • To'liq jadvalni skanerlash bo'yicha maslahat

Maslahat optimallashtiruvchiga jadvalni to'liq skanerdan foydalanishga imkon beradi.

Misollar

Birinchi misolda mevalar jadvalidagi rangi qizil bo'lgan har bir mevaning nomini qaytaradigan SQL so'zlari keltirilgan. Agar mevalar jadvalida rang ustuni uchun indeks bo'lmasa, ma'lumotlar bazasi dvigatelida har bir satr rangini "qizil" bilan taqqoslash uchun har bir satr yuklanishi va tekshirilishi kerak:

   Meva nomini nomini tanlang, Qaerda color = 'qizil';

Ikkinchi misolda nomini qaytaradigan SQL operatori ko'rsatilgan barchasi mevalar stolidagi mevalar. Ushbu bayonotda hech qanday shart yo'q - WHERE bandi yo'q - ma'lumotlar bazasi mexanizmi ushbu so'rov uchun ma'lumotlarni yuklash va qaytarish uchun jadvallarni skanerlashdan foydalanadi, hatto mevalar jadvalida ism ustunida indeks bo'lsa ham, chunki kirish, ya'ni skanerlash - jadval to'g'ridan-to'g'ri indeksning qo'shimcha abstraktsiya qatlami orqali jadvalga kirishdan tezroq:

   Meva nomini tanlang

Uchinchi misol, qarama-qarshi misol bo'lib, deyarli sql dvigatelining jadvalni skanerlash o'rniga indeksni ishlatishiga olib keladi. Ushbu misolda oldingi kabi deyarli bir xil so'rov ishlatilgan, ammo qaytarilgan ismlar alifbo tartibida bo'lishi uchun ORDER BY bandi qo'shiladi. Meva jadvalida ism ustunida indeks bor deb faraz qilsak, ma'lumotlar bazasi mexanizmi endi nomlarni tartibda qaytarish uchun ushbu indeksdan foydalanadi, chunki indeksning qo'shimcha abstraktsiya qatlami orqali jadvalga kirish qatorlarni so'ralgan tartibda qaytarish foydasini beradi . Agar dvigatel jadvallarni skanerlash yordamida qatorlarni yuklagan bo'lsa, u holda qaytarilgan qatorlarni saralash bo'yicha qo'shimcha ishlarni bajarishi kerak edi. Ba'zi o'ta og'ir holatlarda - masalan. ma'lumotlar bazasi mexanizmi tomonidan saqlanadigan statistik ma'lumotlarga ko'ra, jadval juda oz sonli qatorlarni o'z ichiga oladi - optimallashtiruvchi baribir ushbu turdagi so'rovlar uchun jadvallarni skanerdan foydalanishga qaror qilishi mumkin:

   Meva nomini nomni tanlang, buyurtma bo'yicha ism

Ijobiy va salbiy tomonlari

Taroziga soling:

  • Xarajatlarni taxmin qilish mumkin, chunki har safar ma'lumotlar bazasi to'liq jadvallarni satrlarni skanerlashi kerak.
  • Jadval ma'lumotlar bazasi buferining 2 foizidan kam bo'lsa, to'liq skanerlash jadvali tezroq bo'ladi.

Kamchiliklari:

  • Jadvalni to'liq skanerlash indeks bo'lmasa yoki indeks ishlatilmaganda sodir bo'ladi SQL. Va to'liq skanerlash jadvalining natijasi odatda indeks jadvalini skanerlashda sekinroq bo'ladi. Vaziyat shuki: jadval qanchalik katta bo'lsa, ma'lumotlar sekinroq qaytadi.
  • Keraksiz to'liq jadvalni skanerlash juda ko'p miqdorda keraksiz narsalarga olib keladi I / O butun ma'lumotlar bazasida jarayon yuki bilan.

Shuningdek qarang

Adabiyotlar

  1. ^ "Jadvalni skanerlashdan saqlanish". Oracle. 2011 yil.
  2. ^ "Qaysi biri tezroq: indeksga kirish yoki jadvalni skanerlash?". Microsoft TechNet. 2002 yil.
  3. ^ "Optimizatorga kirish yo'llari". Oracle. 2013 yil.