(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LHNRP9'); Spurðaviðmót virkrar skráar - The Codest
The Codest
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Iðnaðargreinar
    • Fjártæknifyrirtæki og bankastarfsemi
    • E-commerce
    • Adtech
    • Heilbrigðistækni
    • Framleiðsla
    • Flutningar
    • Bifreiða
    • Internet hlutanna
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
Aftur ör Farðu aftur
2019-04-15
Hugbúnaðarþróun

Spurðaviðmót virkrar skráar

Marta Polec

Frammistaða er einn mikilvægasti þátturinn sem þarf að hafa í huga þegar vefumsóknir eru þróaðar. Að greina hvernig gögn eru sótt úr gagnagrunni er góður upphafspunktur þegar leitað er að leiðum til að bæta. Í þessari grein finnur þú dæmi um hvernig megi bæta frammistöðu með því að nota samantektarfall og sía gögn á gagnagrunnsstigi.

Hér er tómt.

Smá samhengi til að byrja með

Þessi grein er innblásin af raunverulegu vandamáli sem mér var einu sinni falið að leysa. Að takast á við það kenndi mér margt, og ég nota það enn sem viðmið í huga mér. Ég tel dæmi vera góða námsauðlind; þau geta skýrt margt. Í þessari grein langar mig að deila með ykkur nokkrum dæmum um notkun fyrirspurnaraðferða Active Record.

Til þess að forðast að koma inn á sértækar upplýsingar um viðfangsefnið mun ég nota dæmi um forrit fyrir bókasafn til að sýna dæmi. Allt er nokkuð einfalt, eins og sýnt er í myndinni hér að neðan. Við höfum fjögur töflur: höfundar, bækur, notendur og lántökur. Einn notandi getur lánað sér margar bækur og ein bók getur verið lánað af mörgum notendum, svo við þurfum tengitöflu til að líkana margar-til-margar tengingar. Í okkar tilfelli er það lántökutaflan. Þar geymum við einnig frekari upplýsingar, nefnilega dagsetningar lántöku og skila. Höfundur getur átt margar bækur skráðar undir nafninu sínu. Bók hefur einnig eiginleika sem skilgreinir tegund hennar.

Lestrartölfræði notenda

Verkefnið var að útbúa tölfræði fyrir einn notanda, svo við gætum sagt til um hversu margar bækur af hverjum flokki voru lánaðar. Fyrsta hugmyndin mín var að sækja allar bækur sem notandinn hafði lánað, flokka þær eftir tegundum og kortleggja þær þannig að hver tegund fengi úthlutað bókanúmeri í stað bókalista. Hér er það sem ég kom með:

Hash[Book.joins(:rentals).where(rentals: { user: user }).group_by(&:genre).map { |genre, books| [genre, books.size] }]

Þó að þessi nálgun virki og líti snyrtilega út, nýtir hún ekki alla þá möguleika sem fyrirspurnaraðferðir Active Record bjóða upp á. Þökk sé þeim getum við síað og samantekið. gögn á gagnagrunnsstigi án þess að nota hrátt SQL beint í okkar kóði. Að vinna á gagnagrunnsstigi eykur einnig skilvirkni okkar.

Í dæminu hér að ofan getum við notað group-aðferðina í stað Ruby's group.með aðferð. Það mun beita tthe GROUPBY-skilyrði í tSQL-fyrirspurninni. Ennfremur er hægt að skipta út tengingu og stærðaraðferð fyrir talningar-samansafnsfall. Að lokum stendur eftir fyrirspurn sem lítur svona út:

Bók.sameinar(:útleigur).hvar(útleigur: { notandi: notandi }).hópur(:flokkur).telja(:bækur)

Það lítur enn einfaldara út!

Önnur gagnleg dæmi

Hér að neðan finnur þú nokkrar aðrar leiðir til að nota fyrirspurnarferðirnar sem mér finnst þess virði að þekkja.

Boð til óvirkra notenda

VERKEFNI: Sía notendur sem hafa aldrei lánað sér bók eða gerðu það fyrir meira en ári síðan.

Við gætum sótt alla notendur með því að innifela tengdar leigubókanir og síðan sía þá með select-aðferðinni.

User.includes(:rentals).select do |user|
 user.rentals.empty? || user.rentals.none? { |rental| rental.start_date >= Date.today - 1.year }
end Hljóðskrift

En auðvitað er ekki þörf á að sækja allt. Með því að nota fyrirspurnaraðferðir getum við síað það út á gagnagrunnsstigi. Fyrst skulum við velja notendur sem hafa lánað sér nokkrar bækur á síðasta ári og síðan útiloka þá úr lokaúrvalinu.

Svona mun undirfyrirspurnin líta út:

User.joins(:rentals).where(rentals: { start_date: (Date.today - 1.year).Date.today })

Og nú skulum við setja allt saman:

Notandi.settu skilyrði fyrir ekki (id: [Notandi.tengist.leigum.settu skilyrði fyrir {start_date: (Date.today - 1.ár)..Date.today}])])

Undirfulltrúaðir höfundar

VERKEFNI: Fá höfunda sem eiga eina eða engar lánaðar bækur

Að gera þetta með select-aðferðinni er mjög einfalt, en aftur – það er ekki þörf á að vinna með svo stórt gagnasafn þar sem gagnagrunnurinn getur síað það fyrir okkur:

Author.includes(:books).select { |author| author.books.size <= 1 }

Þá er fljótlegt og auðvelt að sía höfunda sem ekki hafa fengið neina bók úthlutaða:

Höfundur.vinstri-sameiningar(:bækur).skilyrði(bækur: { id: nil })Hljóðskrift

Það er mikilvægt að muna eitt þegar notað er left_joins (og ytri tengingar almennt). Ef í vinstri töflunni (hér: höfundar) eru færslur sem ekki eiga sér samsvarandi færslur í hægri töflunni (hér: bækur), þá verða reitirnir í hægri töflunni í niðurstöðunni fylltir með gildunum nil.

Þar sem við þurfum einnig höfunda sem eiga eina bók skráða í kerfinu, eru nokkrar aðgerðir í viðbót sem þarf að framkvæma. Við verðum að hópa, telja og bæta við skilyrði. Svona sameinum við allt saman:

Höfundur.left_joins(:bækur).hópur(:auðkenni).með skilyrði("count(*) <= ?", 1)

Skilyrðið kemur eftir samansafnsfallaðgerðina, svo við verðum að nota HAVING-skilyrðið í stað WHERE-skilyrðsins til að tilgreina það.

Það er þess virði að skoða fyrirspurnaraðferðir Active Record þegar hugsað er um frammistöðu forritsins. Þær geta einfaldað kóðann þinn og gert hann hraðari. Ég vona að hin sameiginlegu dæmin muni hjálpa þér að kanna möguleikana sem fyrirspurnaraðferðirnar bjóða upp á.

Lesa meira:

– Tími er kominn fyrir nýja veruleika. Tímabil fjarvinnu hófst fyrir mánuði síðan.

– Þarf að nota algengar JavaScript-rammasetningar í Rails-forritinu þínu? Stimulus.js gæti verið valkostur.

– Vefforritþróun: Af hverju er Ruby on Rails tækni sem vert er að velja?

Tengdar greinar

Myndskreyting af heilbrigðisforriti fyrir snjallsíma með hjartatákni og hækkandi heilsufarsgrafík, merkt með The Codest-merkinu, sem táknar stafræna heilsu og HealthTech-lausnir.
Hugbúnaðarþróun

Heilbrigðis-hugbúnaður: gerðir og notkunartilvik

Tólin sem heilbrigðisstofnanir treysta á í dag líta ekkert út eins og pappírsskjöl frá fyrri áratugum. Heilbrigðisforrit styðja nú heilbrigðiskerfi, sjúklingameðferð og nútímalega heilbrigðisþjónustu á klínískum og...

THECODEST
Yfirlitsmynd sem sýnir hnignandi súlurit með uppstrekktri ör og gullmynt sem táknar kostnaðarhagkvæmni eða sparnað. The Codest-merkið birtist í efra vinstra horni með slagorðinu "In Code We Trust" á ljósgráum bakgrunni.
Hugbúnaðarþróun

Hvernig á að stækka þróunarteymið án þess að fórna gæðum vörunnar

Ertu að stækka þróunarteymið þitt? Lærðu hvernig á að vaxa án þess að fórna gæðum vörunnar. Þessi leiðarvísir fjallar um merki um að kominn sé tími til að stækka, uppbyggingu teymisins, ráðningar, forystu og verkfæri—og hvernig teymið getur...

THECODEST
Hugbúnaðarþróun

Búðu til vefumsóknir sem þola framtíðina: innsýn frá sérfræðiteymi The Codest

Uppgötvaðu hvernig The Codest skarar fram úr við að búa til stigstækar, gagnvirkar vefumsóknir með nýjustu tækni, sem bjóða upp á hnökralausa notendaupplifun á öllum kerfum. Lærðu hvernig sérfræðiþekking okkar knýr fram stafræna umbreytingu og viðskipti...

THECODEST
Hugbúnaðarþróun

Topp 10 hugbúnaðarþróunarfyrirtæki í Lettlandi

Kynntu þér fremstu hugbúnaðarþróunarfyrirtæki Lettlands og nýstárlegar lausnir þeirra í nýjustu grein okkar. Uppgötvaðu hvernig þessir tækniforingjar geta hjálpað til við að efla fyrirtækið þitt.

thecodest
Lausnir fyrir fyrirtæki og vaxtarfyrirtæki

Grunnatriði í Java hugbúnaðarþróun: Leiðarvísir að árangursríkri útvistun

Kannaðu þessa ómissandi leiðbeiningu um árangursríka outsourcing Java hugbúnaðarþróun til að auka skilvirkni, afla aðgangs að sérfræðiþekkingu og tryggja árangur verkefna með The Codest.

thecodest

Gerðu þig áskrifanda að þekkingargrunni okkar og vertu upplýstur um sérfræðiþekkingu upplýsingatæknigeirans.

    Um okkur

    The Codest – Alþjóðlegt hugbúnaðarþróunarfyrirtæki með tæknimiðstöðvar í Póllandi.

    Bretland - Höfuðstöðvar

    • Skrifstofa 303B, 182-184 High Street North E6 2JA
      Lundúnir, England

    Pólland - staðbundin tæknimiðstöðvar

    • Fabryczna skrifstofugarður, Aleja
      Herbergi 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsjá, Pólland

    The Codest

    • Heim
    • Um okkur
    • Þjónusta
    • Case Studies
    • Vitið hvernig
    • Starfsferilmöguleikar
    • Orðabók

    Þjónusta

    • Það er ráðgjafi
    • Hugbúnaðarþróun
    • Bakendaþróun
    • Framhliðþróun
    • Staff Augmentation
    • Bakhliðaráþróunaraðilar
    • Skýjaverkfræðingar
    • Gagnaverkfræðingar
    • Annað
    • Gæðatryggingartæknimenn

    Auðlindir

    • Staðreyndir og goðsagnir um samstarf við utanaðkomandi hugbúnaðarþróunaraðila
    • Frá Bandaríkjunum til Evrópu: Af hverju ákveða bandarísk sprotafyrirtæki að flytja til Evrópu?
    • Samanburður á tæknifjarkerfisþróunarmiðstöðvum: Tech Offshore Europe (Pólland), ASEAN (Filippseyjar), Eurasia (Tyrkland)
    • Hvert eru helstu áskoranir CTO-a og CIO-a?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Höfundarréttur © 2026 af The Codest. Öll réttindi áskilin.

    is_ISIcelandic
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian es_ESSpanish nl_NLDutch etEstonian elGreek pt_PTPortuguese cs_CZCzech lvLatvian lt_LTLithuanian is_ISIcelandic