Nā hopena hopena a me nā pilikia hana

ʻO kekahi o nā hiʻohiʻona maʻamau i nā noi āpau a mākou i kamaʻāina ai, ʻo ia ka ʻimi ʻana i ka ʻikepili e like me kekahi mau koi a hōʻike ʻia ma kahi palapala maʻalahi e heluhelu. Loaʻa paha nā koho ʻē aʻe no ka hoʻokaʻawale ʻana, ka hui ʻana, a me ka ʻaoʻao. ʻO ka hana, ma ke kumumanaʻo, he mea liʻiliʻi, akā i ka wā e hoʻoponopono ai, nui nā mea hoʻomohala e hana i nā hewa he nui, a ma hope e hoʻopilikia ai ka huahana. E ho'āʻo kākou e noʻonoʻo i nā koho like ʻole no ka hoʻoponopono ʻana i kēia pilikia a hoʻokumu i nā manaʻo no ke koho ʻana i ka hoʻokō pono loa.

Nā hopena hopena a me nā pilikia hana

Koho palapala #1

ʻO ka koho maʻalahi loa i hiki mai i ka noʻonoʻo ʻo ia ka hōʻike ʻaoʻao i kēlā me kēia ʻaoʻao o nā hualoaʻa ma kāna ʻano maʻamau.

Nā hopena hopena a me nā pilikia hana
E ʻōlelo kākou ua hoʻohana kāu noi i kahi waihona pili. I kēia hihia, e hōʻike i ka ʻike ma kēia palapala, pono ʻoe e holo i ʻelua mau nīnau SQL:

  • E kiʻi i nā lālani no ka ʻaoʻao o kēia manawa.
  • E helu i ka huina o nā laina e pili ana i nā koina hulina - pono kēia e hōʻike i nā ʻaoʻao.

E nānā kākou i ka nīnau mua me ka hoʻohana ʻana i kahi hōkeo ʻikepili MS SQL ma ke ʻano he laʻana Hana Hana no 2016 kikowaena. No kēia kumu e hoʻohana mākou i ka pākaukau Sales.SalesOrderHeader:

SELECT * FROM Sales.SalesOrderHeader
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

E hoʻihoʻi ka nīnau ma luna i nā kauoha 50 mua mai ka papa inoa, i hoʻokaʻawale ʻia e ka lā iho o ka hoʻohui, ʻo ia hoʻi, nā kauoha hou loa he 50.

Holo wikiwiki ia ma ka waihona hoʻāʻo, akā e nānā i ka hoʻolālā hoʻokō a me nā helu I/O:

Nā hopena hopena a me nā pilikia hana

Table 'SalesOrderHeader'. Scan count 1, logical reads 698, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Hiki iā ʻoe ke loaʻa nā helu I/O no kēlā me kēia nīnau ma ka holo ʻana i ke kauoha SET STATISTICS IO ON i ka manawa holo nīnau.

E like me kāu e ʻike ai mai ka hoʻolālā hoʻokō, ʻo ka koho nui loa o ka waiwai ʻo ka hoʻokaʻawale ʻana i nā lālani āpau o ka papa kumu ma ka lā i hoʻohui ʻia. A ʻo ka pilikia, ʻo ka nui o nā lālani e ʻike ʻia ma ka papaʻaina, ʻoi aku ka "paʻakikī" o ka hoʻokaʻawale ʻana. I ka hoʻomaʻamaʻa, pono e pale ʻia kēlā mau kūlana, no laila e hoʻohui i kahi index i ka lā o ka hoʻohui a ʻike inā ua loli ka hoʻohana waiwai:

Nā hopena hopena a me nā pilikia hana

Table 'SalesOrderHeader'. Scan count 1, logical reads 165, physical reads 0, read-ahead reads 5, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

ʻIke ʻia ua ʻoi aku ka maikaʻi. Akā ua hoʻopau ʻia nā pilikia a pau? E hoʻololi i ka nīnau e ʻimi i nā kauoha i ʻoi aku ka nui o ke kumukūʻai o nā waiwai ma mua o $100:

SELECT * FROM Sales.SalesOrderHeader
WHERE SubTotal > 100
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Nā hopena hopena a me nā pilikia hana

Table 'SalesOrderHeader'. Scan count 1, logical reads 1081, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

He kūlana ʻakaʻaka ko mākou: ʻaʻole i ʻoi aku ka ʻino o ka hoʻolālā nīnau ma mua o ka mea ma mua, akā ʻo ka helu maoli o nā heluhelu loiloi ʻaneʻane ʻelua ʻoi aku ka nui me ka nānā ʻana i ka papaʻaina piha. Aia kahi ala i waho - inā mākou e hana i kahi index composite mai kahi papa kuhikuhi mua a hoʻohui i ke kumukūʻai o nā waiwai e like me ka lua o ka lua, e loaʻa hou iā mākou he 165 mau heluhelu loiloi:

CREATE INDEX IX_SalesOrderHeader_OrderDate_SubTotal on Sales.SalesOrderHeader(OrderDate, SubTotal);

Hiki ke hoʻomau ʻia kēia pūʻulu laʻana no ka manawa lōʻihi, akā ʻo nā manaʻo nui ʻelua aʻu e makemake ai e hōʻike ma aneʻi:

  • Hiki i ka hoʻohui ʻana i kekahi koho hou a i ʻole ka hoʻonohonoho ʻana i kahi hulina hulina hiki ke loaʻa ka hopena nui i ka wikiwiki o ka hulina hulina.
  • Akā inā pono mākou e unuhi i kahi hapa wale nō o ka ʻikepili, ʻaʻole nā ​​​​hualoaʻa a pau e pili ana i nā huaʻōlelo ʻimi, nui nā ala e hoʻomaikaʻi ai i kēlā nīnau.

I kēia manawa, e neʻe kākou i ka nīnau ʻelua i ʻōlelo ʻia ma ka hoʻomaka ʻana - ʻo ia ka helu o nā moʻolelo e hoʻokō i ka ʻimi ʻimi. E lawe i ka laʻana like - e ʻimi ana i nā kauoha i ʻoi aku ma mua o $100:

SELECT COUNT(1) FROM Sales.SalesOrderHeader
WHERE SubTotal > 100

Hāʻawi ʻia i ka index composite i hōʻike ʻia ma luna nei, loaʻa iā mākou:

Nā hopena hopena a me nā pilikia hana

Table 'SalesOrderHeader'. Scan count 1, logical reads 698, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

ʻO ka ʻoiaʻiʻo o ka hele ʻana o ka nīnau ma ka papa kuhikuhi holoʻokoʻa ʻaʻole ia he mea kupanaha, no ka mea, ʻaʻole ʻo ke kahua SubTotal i ke kūlana mua, no laila ʻaʻole hiki i ka nīnau ke hoʻohana. Hoʻoholo ʻia ka pilikia ma ka hoʻohui ʻana i kahi kuhikuhi hou ma ke kahua SubTotal, a ma muli o ka hāʻawi ʻana iā 48 wale nō nā heluhelu loiloi.

Hiki iā ʻoe ke hāʻawi i kekahi mau hiʻohiʻona o nā noi no ka helu ʻana i ka nui, akā mau ka ʻano like: ʻO ka loaʻa ʻana o kahi ʻāpana ʻikepili a me ka helu ʻana i ka huina he ʻelua mau noi ʻokoʻa, a koi kēlā me kēia i kāna mau ana ponoʻī no ka hoʻonui ʻana. Ma keʻano laulā, ʻaʻole hiki iā ʻoe ke ʻimi i ka hui pū ʻana o nā ʻōlelo kuhikuhi i hana maikaʻi like no nā nīnau ʻelua.

No laila, ʻo kekahi o nā koi koʻikoʻi e pono e wehewehe ʻia i ka wā e hoʻomohala ai i kahi hopena hulina inā he mea koʻikoʻi i kahi ʻoihana ke ʻike i ka nui o nā mea i loaʻa. Hiki pinepine mai no. A ʻo ka hoʻokele ʻana ma nā helu ʻaoʻao kikoʻī, i koʻu manaʻo, he hopena me kahi ākea haiki loa, ʻoiai ʻo ka hapa nui o nā hiʻohiʻona ʻaoʻao e like me "hele i ka ʻaoʻao aʻe."

Koho palapala #2

E manaʻo mākou ʻaʻole mālama nā mea hoʻohana i ka ʻike ʻana i ka huina o nā mea i loaʻa. E hoʻāʻo kākou e hoʻomaʻamaʻa i ka ʻaoʻao hulina:

Nā hopena hopena a me nā pilikia hana
ʻO ka ʻoiaʻiʻo, ʻo ka mea wale nō i hoʻololi ʻia ʻaʻohe ala e hoʻokele ai i nā helu ʻaoʻao kikoʻī, a i kēia manawa ʻaʻole pono kēia papaʻaina e ʻike i ka nui o nā mea e hiki ai ke hōʻike. Akā ke kū nei ka nīnau - pehea e ʻike ai ka papa ʻaina inā he ʻikepili no ka ʻaoʻao aʻe (i mea e hōʻike pololei ai i ka loulou "Next")?

He mea maʻalahi loa ka pane: hiki iā ʻoe ke heluhelu mai ka waihona ʻikepili i hoʻokahi moʻolelo hou aʻe ma mua o ka mea e pono ai no ka hōʻike ʻana, a ʻo ka loaʻa ʻana o kēia moʻolelo "hoʻohui" e hōʻike inā aia kahi ʻāpana aʻe. Ma kēia ala, pono ʻoe e holo i hoʻokahi noi e kiʻi i hoʻokahi ʻaoʻao o ka ʻikepili, kahi e hoʻomaikaʻi nui ai i ka hana a maʻalahi ke kākoʻo ʻana i ia hana. I kaʻu hana, aia kekahi hihia i ka hōʻole ʻana i ka helu ʻana i ka nui o nā moʻolelo i wikiwiki i ka hāʻawi ʻana i nā hopena e 4-5 mau manawa.

Nui nā koho mea hoʻohana no kēia ala: "hoʻi" a me "mua" kauoha, e like me ka laʻana ma luna, kahi pihi "hoʻouka hou aku", e hoʻohui wale i kahi ʻāpana hou i nā hopena i hōʻike ʻia, "ka ʻōwili pau ʻole", e hana ana. ma ke kumu o "hoʻouka hou aku" ", akā ʻo ka hōʻailona e kiʻi i ka ʻāpana aʻe no ka mea hoʻohana e ʻōwili i nā hopena i hōʻike ʻia a hiki i ka hopena. ʻO kēlā me kēia ʻano hoʻonā hiʻohiʻona, ʻo ka loina o ka hōʻiliʻili ʻikepili e mau nō ia.

Nā nuances o ka hoʻokō paging

Hoʻohana ʻia nā hiʻohiʻona nīnau a pau i hōʻike ʻia ma luna nei i ke ʻano "offset + helu", ke hōʻike nei ka nīnau ponoʻī i ke ʻano o nā lālani hopena a me ka nui o nā lālani e hoʻihoʻi ʻia. ʻO ka mea mua, e nānā kākou i ka maikaʻi o ka hoʻonohonoho ʻana i ka passing parameter i kēia hihia. I ka hoʻomaʻamaʻa, ua loaʻa iaʻu nā ala he nui:

  • ʻO ka helu serial o ka ʻaoʻao i noi ʻia (pageIndex), ka nui o ka ʻaoʻao (pageSize).
  • ʻO ka helu serial o ka moʻolelo mua e hoʻihoʻi ʻia (startIndex), ka helu kiʻekiʻe o nā moʻolelo i ka hopena (helu).
  • ʻO ka helu kaʻina o ka moʻolelo mua e hoʻihoʻi ʻia (startIndex), ka helu kaʻina o ka moʻolelo hope e hoʻihoʻi ʻia (endIndex).

I ka nānā mua ʻana me he mea lā he haʻahaʻa loa kēia ʻaʻohe ʻokoʻa. Akā ʻaʻole pēlā - ʻo ka koho maʻalahi a maʻamau ka lua (startIndex, helu). Nui nā kumu no kēia:

  • No ka hōʻike hōʻike helu helu +1 i hāʻawi ʻia ma luna, ʻo ka koho mua me ka pageIndex a me ka pageSize he mea maʻalahi loa. No ka laʻana, makemake mākou e hōʻike i nā pou 50 i kēlā me kēia ʻaoʻao. Wahi a ka algorithm i luna, pono ʻoe e heluhelu i hoʻokahi moʻolelo ma mua o ka pono. Inā ʻaʻole i hoʻokō ʻia kēia "+1" ma ka kikowaena, ʻike ʻia no ka ʻaoʻao mua pono mākou e noi i nā moʻolelo mai 1 a 51, no ka lua - mai 51 a 101, etc. Inā ʻoe e kuhikuhi i ka nui o ka ʻaoʻao o 51 a hoʻonui i ka pageIndex, a laila e hoʻi ka ʻaoʻao ʻelua mai 52 a 102, etc. No laila, i ka koho mua, ʻo ke ala wale nō e hoʻokō pono ai i kahi pihi e hele ai i ka ʻaoʻao aʻe, ʻo ia ka hoʻopaʻa ʻana o ka server i ka laina "keu", ʻo ia kahi nuance implicit.
  • ʻAʻole kūpono ke kolu o ka koho, no ka mea, no ka holo ʻana i nā nīnau ma ka hapa nui o nā waihona, pono ʻoe e hoʻohele i ka helu ma mua o ka papa kuhikuhi o ka moʻolelo hope. ʻO ka unuhi ʻana i ka startIndex mai ka endIndex he hana helu maʻalahi, akā ʻoi aku ka maikaʻi ma aneʻi.

I kēia manawa, pono mākou e wehewehe i nā hemahema o ka hoʻokō ʻana i ka paging ma o "offset + quantity":

  • ʻOi aku ke kumukūʻai a ʻoi aku ka lohi o ka lawe ʻana i kēlā me kēia ʻaoʻao ma mua o ka mea ma mua, no ka mea, pono e hele ka waihona i nā moʻolelo a pau "mai ka hoʻomaka" e like me ka ʻimi ʻana a me ka hoʻokaʻawale ʻana, a laila kū i ka ʻāpana i makemake ʻia.
  • ʻAʻole hiki i nā DBMS āpau ke kākoʻo i kēia ala.

Aia kekahi mau ʻokoʻa, akā ʻaʻole kūpono. ʻO ka mua o kēia mau ala i kapa ʻia ʻo "keyset paging" a i ʻole "search method" a penei: ma hope o ka loaʻa ʻana o kahi ʻāpana, hiki iā ʻoe ke hoʻomanaʻo i nā koina kahua ma ka moʻolelo hope ma ka ʻaoʻao, a laila hoʻohana iā lākou e loaʻa ai. ka mahele aʻe. No ka laʻana, ua holo mākou i kēia nīnau:

SELECT * FROM Sales.SalesOrderHeader
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

A ma ka moʻolelo hope loa i loaʻa iā mākou ka waiwai o ka lā kauoha '2014-06-29'. A laila e kiʻi i ka ʻaoʻao aʻe hiki iā ʻoe ke hoʻāʻo e hana i kēia:

SELECT * FROM Sales.SalesOrderHeader
WHERE OrderDate < '2014-06-29'
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

ʻO ka pilikia, ʻo OrderDate kahi kahua kūʻokoʻa ʻole a ʻo ke kūlana i hōʻike ʻia ma luna nei e nele paha i ka nui o nā lālani i koi ʻia. No ka hoʻohui ʻana i ka maopopo ʻole i kēia nīnau, pono ʻoe e hoʻohui i kahi kahua kūʻokoʻa i ke kūlana (manaʻo ʻia ʻo 75074 ka waiwai hope o ke kī mua mai ka ʻāpana mua):

SELECT * FROM Sales.SalesOrderHeader
WHERE (OrderDate = '2014-06-29' AND SalesOrderID < 75074)
   OR (OrderDate < '2014-06-29')
ORDER BY OrderDate DESC, SalesOrderID DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

E hana pololei ana kēia koho, akā ma ka laulā he paʻakikī ke koho ʻana no ka mea aia i loko o ke kūlana kahi mea hoʻohana OR. Inā piʻi ka waiwai o ke kī mua i ka piʻi ʻana o OrderDate, a laila hiki ke maʻalahi ke kūlana ma ka waiho ʻana i kahi kānana e SalesOrderID. Akā inā ʻaʻohe pilina koʻikoʻi ma waena o nā waiwai o ke kī mua a me ke kahua kahi i hoʻokaʻawale ʻia ai ka hopena, ʻaʻole hiki ke pale ʻia kēia OR i ka hapa nui o nā DBMS. ʻO kahi ʻokoʻa aʻu i ʻike ai ʻo PostgreSQL, e kākoʻo piha ana i ka hoʻohālikelike tuple, a hiki ke kākau ʻia ke kūlana ma luna nei "WHERE (OrderDate, SalesOrderID) <('2014-06-29', 75074)". Hāʻawi ʻia i kahi kī hui me kēia mau kahua ʻelua, pono e maʻalahi kahi nīnau e like me kēia.

Hiki ke loaʻa kahi ala ʻē aʻe ʻelua, no ka laʻana, ma ElasticSearch scroll API ai ole ia, ʻO Kosmos DB - ke hoʻihoʻi mai kahi noi, me ka ʻikepili, i kahi ʻike kūikawā e hiki ai iā ʻoe ke kiʻi i ka ʻāpana aʻe o ka ʻikepili. Inā he ola palena ʻole kēia mea ʻike (e like me ka Comsos DB), a laila he ala maikaʻi kēia e hoʻokō ai i ka paging me ka hoʻololi ʻana ma waena o nā ʻaoʻao (koho #2 i ʻōlelo ʻia ma luna). ʻO kona mau hemahema: ʻaʻole i kākoʻo ʻia i nā DBMS āpau; ʻO ka hopena o ka mea hōʻike hou-chunk hiki ke loaʻa i ke ola palena, ʻaʻole kūpono ia no ka hoʻokō ʻana i ka pilina mea hoʻohana (e like me ka ElasticSearch scroll API).

Kānana paʻakikī

E hoʻopili hou i ka hana. Inā paha aia kahi koi e hoʻokō i ka mea i kapa ʻia ʻo faceted search, i kamaʻāina loa i nā mea āpau mai nā hale kūʻai pūnaewele. ʻO nā hiʻohiʻona ma luna nei e pili ana i ka papa kauoha ʻaʻole i hōʻike nui ʻia i kēia hihia, no laila e hoʻololi kākou i ka papa Huahana mai ka waihona AdventureWorks:

Nā hopena hopena a me nā pilikia hana
He aha ka manaʻo ma hope o ka huli alo? ʻO ka mea ʻoiaʻiʻo, no kēlā me kēia mea kānana e hōʻike ʻia ka helu o nā moʻolelo i kūpono i kēia koina e noʻonoʻo ana i nā kānana i koho ʻia ma nā ʻāpana ʻē aʻe.

No ka laʻana, inā koho mākou i ka ʻāpana Bikes a me ka waihoʻoluʻu ʻeleʻele i kēia hiʻohiʻona, e hōʻike ka papa ʻaina i nā kaʻa ʻeleʻele wale nō, akā:

  • No kēlā me kēia koho i loko o ka pūʻulu Kāwai, e hōʻike ʻia ka helu o nā huahana mai kēlā ʻāpana i ka ʻeleʻele.
  • No kēlā me kēia koho o ka hui "Colors", e hōʻike ʻia ka helu o nā kaʻa o kēia kala.

Eia kekahi laʻana o ka hopena hopena no ia mau kūlana:

Nā hopena hopena a me nā pilikia hana
Inā ʻoe e nānā i ka ʻāpana "Lahu", e hōʻike pū ka papaʻaina i nā lole ʻeleʻele i loko o ka waihona. E helu hou ʻia ka helu o nā huahana ʻeleʻele ma ka ʻāpana "Color" e like me nā kūlana hou, aia wale nō ma ka ʻāpana "Categories" ʻaʻohe mea e loli ... Manaʻo wau ua lawa kēia mau hiʻohiʻona e hoʻomaopopo i ka algorithm hulina faceted maʻamau.

I kēia manawa, e noʻonoʻo kākou pehea e hoʻokō ʻia ai kēia ma ke kumu pili. Pono kēlā me kēia pūʻulu o nā pae hoʻohālike, e like me kā Kāwai a me ke kala, i kahi nīnau kaʻawale:

SELECT pc.ProductCategoryID, pc.Name, COUNT(1) FROM Production.Product p
  INNER JOIN Production.ProductSubcategory ps ON p.ProductSubcategoryID = ps.ProductSubcategoryID
  INNER JOIN Production.ProductCategory pc ON ps.ProductCategoryID = pc.ProductCategoryID
WHERE p.Color = 'Black'
GROUP BY pc.ProductCategoryID, pc.Name
ORDER BY COUNT(1) DESC

Nā hopena hopena a me nā pilikia hana

SELECT Color, COUNT(1) FROM Production.Product p
  INNER JOIN Production.ProductSubcategory ps ON p.ProductSubcategoryID = ps.ProductSubcategoryID
WHERE ps.ProductCategoryID = 1 --Bikes
GROUP BY Color
ORDER BY COUNT(1) DESC

Nā hopena hopena a me nā pilikia hana
He aha ka hewa o kēia hoʻonā? He mea maʻalahi loa - ʻaʻole maikaʻi ka nui. Pono kēlā me kēia māhele kānana i kahi nīnau kaʻawale e helu ai i ka nui, a ʻaʻole maʻalahi kēia mau nīnau. Ma nā hale kūʻai pūnaewele, loaʻa paha i kekahi mau ʻāpana he ʻumi mau ʻāpana kānana, hiki ke lilo i pilikia koʻikoʻi.

ʻO ka maʻamau ma hope o kēia mau ʻōlelo e hāʻawi ʻia iaʻu i kekahi mau hoʻonā, ʻo ia hoʻi:

  • E hoʻohui i nā helu helu a pau i hoʻokahi nīnau. Hiki i kēia ke hoʻohana i ka huaʻōlelo UNION, akā ʻaʻole ia e kōkua nui i ka hana - pono e hoʻokō ka waihona i kēlā me kēia ʻāpana mai ka ʻohi ʻana.
  • Ka nui o ka waihona. Manaʻo ʻia kēia iaʻu kokoke i kēlā me kēia manawa aʻu e wehewehe ai i kahi pilikia. ʻO ka hōʻailona he mea hiki ʻole kēia. E ʻōlelo kākou he 10 mau "ʻaoʻao", he 5 ko kēlā me kēia waiwai. He kūlana "haʻahaʻa" kēia i hoʻohālikelike ʻia i nā mea i ʻike ʻia ma nā hale kūʻai pūnaewele like. ʻO ke koho ʻana i hoʻokahi ʻāpana ʻaoʻao e pili ana i ka nui ma 9 mau mea ʻē aʻe, ʻo ia hoʻi, no kēlā me kēia hui ʻana o nā pae hoʻohālikelike hiki ke ʻokoʻa ka nui. Ma kā mākou laʻana, he 50 ka nui o nā pae hoʻohālike e hiki ai i ka mea hoʻohana ke koho, no laila, e hiki ke hui pū ʻia he 250. ʻAʻole lawa ka hoʻomanaʻo a i ʻole ka manawa e hoʻopiha ai i kēlā ʻano ʻikepili. Maanei hiki iā ʻoe ke kūʻē a ʻōlelo ʻaʻole ʻoiaʻiʻo nā hui āpau a ʻaʻole hiki i ka mea hoʻohana ke koho ma mua o 5-10 mau koho. ʻAe, hiki ke hana palaualelo a hūnā i ka nui o nā mea i koho ʻia, akā ʻoi aku ka nui o nā koho, ʻoi aku ka maikaʻi o ia cache a ʻoi aku ka ʻike ʻana i nā pilikia o ka manawa pane (ʻoiai inā ʻo ka hoʻololi mau ka hoʻonohonoho ʻikepili).

ʻO ka mea pōmaikaʻi, ua lōʻihi ka loaʻa ʻana o ia pilikia i nā hopena maikaʻi loa e hana maʻalahi i ka nui o ka ʻikepili. No kekahi o kēia mau koho, he mea kūpono ke puunaue i ka helu hou ʻana o nā ʻaoʻao a loaʻa ka ʻaoʻao hopena i ʻelua mau kelepona like ʻole i ke kikowaena a hoʻonohonoho i ka mea hoʻohana ma ke ʻano o ka hoʻouka ʻana i nā ʻikepili e nā facets "ʻaʻole e hoʻopilikia" i ka hōʻike ʻana o hopena huli.

  • E kāhea i ka helu hou ʻana o nā "facets" me ka hiki ʻole. No ka laʻana, mai helu hou i nā mea a pau i kēlā me kēia manawa e hoʻololi ai nā paena hulina, akā e ʻimi i ka huina o nā hopena i kūpono i nā kūlana o kēia manawa a koi i ka mea hoʻohana e hōʻike iā lākou - "1425 mau moʻolelo i loaʻa, hōʻike?" Hiki i ka mea hoʻohana ke hoʻomau i ka hoʻololi ʻana i nā huaʻōlelo ʻimi a kaomi i ke pihi "hōʻike". Ma ka hihia ʻelua wale nō e hoʻokō ʻia nā noi āpau no ka loaʻa ʻana o nā hopena a me ka helu hou ʻana i nā nui ma nā "facets" āpau. I kēia hihia, e like me kāu e ʻike maʻalahi ai, pono ʻoe e hana me kahi noi e kiʻi i ka huina o nā hopena a me kāna optimization. Hiki ke loaʻa kēia ʻano ma nā hale kūʻai pūnaewele liʻiliʻi. ʻIke loa, ʻaʻole kēia he panacea no kēia pilikia, akā i nā hihia maʻalahi hiki ke lilo i mea hoʻololi maikaʻi.
  • E hoʻohana i nā ʻenekini huli e ʻimi i nā hopena a helu i nā ʻaoʻao, e like me Solr, ElasticSearch, Sphinx a me nā mea ʻē aʻe. Hoʻolālā ʻia lākou a pau e kūkulu i nā "facets" a hana maikaʻi i kēia ma muli o ka index inverted. Pehea ka hana ʻana o nā ʻenekini, no ke aha i ʻoi aku ka maikaʻi ma mua o ka ʻikepili kumu nui, he aha nā hana a me nā pitfalls - he kumuhana kēia no kahi ʻatikala kaʻawale. Maʻaneʻi, makemake wau e huki i kou manaʻo i ka ʻoiaʻiʻo ʻaʻole hiki i ka ʻenekini huli ke lilo i mea pani no ka waihona ʻikepili koʻikoʻi, ua hoʻohana ʻia ia ma ke ʻano he mea hoʻohui: ʻo nā hoʻololi i ka ʻikepili nui e pili ana i ka ʻimi e hoʻonohonoho ʻia i loko o ka helu hulina; Hoʻopili maʻamau ka ʻenekini me ka ʻenekini huli a ʻaʻole i komo i ka ʻikepili nui. ʻO kekahi o nā mea koʻikoʻi ma aneʻi pehea e hoʻonohonoho pono ai i kēia synchronization. Aia nā mea a pau i nā koi "manawa pane". Inā ʻaʻole koʻikoʻi ka manawa ma waena o ka hoʻololi ʻana i ka waihona nui a me kāna "hōʻike" i ka ʻimi, hiki iā ʻoe ke hana i kahi lawelawe e ʻimi nei i nā moʻolelo i hoʻololi hou ʻia i kēlā me kēia mau minuke a kuhikuhi iā lākou. Inā makemake ʻoe i ka manawa pane pōkole loa, hiki iā ʻoe ke hoʻokō i kekahi mea like pahu puka waho e hoʻouna i nā mea hou i ka lawelawe ʻimi.

haʻina

  1. He pilikia koʻikoʻi ka hoʻokō ʻana i ka ʻaoʻao ʻaoʻao server a he mea kūpono wale nō no ka ulu wikiwiki a i ʻole ka nui o nā pūʻulu ʻikepili. ʻAʻohe mea ʻai pololei loa no ka loiloi ʻana i ka "nui" a i ʻole "wikiwiki ulu", akā e hahai wau i kēia ala:
    • Inā loaʻa ka hōʻiliʻili piha o ka ʻikepili, me ka noʻonoʻo ʻana i ka manawa kikowaena a me ka hoʻouna ʻana i ka pūnaewele, kūpono i nā koi hana maʻamau, ʻaʻohe kumu o ka hoʻokō ʻana i ka paging ma ka ʻaoʻao kikowaena.
    • Aia paha kahi kūlana kahi i manaʻo ʻole ʻia ai nā pilikia hana i ka wā e hiki mai ana, ʻoiai he liʻiliʻi ka ʻikepili, akā ke ulu mau nei ka hōʻiliʻili ʻikepili. Inā ʻaʻole ʻoluʻolu hou kekahi mau ʻikepili i ka wā e hiki mai ana, ʻoi aku ka maikaʻi o ka hoʻomaka koke ʻana i ka palapala.
  2. Inā ʻaʻohe koi koʻikoʻi ma ka ʻaoʻao o ka ʻoihana e hōʻike i ka huina o nā hopena a i ʻole e hōʻike i nā helu ʻaoʻao, a ʻaʻohe ʻenekini huli kāu ʻōnaehana, ʻoi aku ka maikaʻi ʻaʻole e hoʻokō i kēia mau helu a noʻonoʻo i ke koho #2.
  3. Inā he koi maopopo no ka huli ʻana i ke alo, ʻelua kāu koho me ka ʻole o ka hoʻokō ʻana:
    • Mai helu hou i nā nui a pau i kēlā me kēia manawa ke hoʻololi nā pae hoʻohālike.
    • E hoʻohana i nā mīkini ʻimi e like me Solr, ElasticSearch, Sphinx a me nā mea ʻē aʻe. Akā, pono e hoʻomaopopoʻiaʻaʻole hiki ke lilo i pani no ka waihona waihona nui, a pono e hoʻohanaʻia i mea hoʻohui i ka waihona nui no ka hoʻoponoponoʻana i nā pilikia huli.
  4. Eia kekahi, ma ke ʻano o ka huli ʻaoʻao, kūpono ke hoʻokaʻawale i ka loaʻa ʻana o ka ʻaoʻao hualoaʻa a me ka helu ʻana i ʻelua mau noi like. ʻOi aku ka lōʻihi o ka helu ʻana i ka nui ma mua o ka loaʻa ʻana o nā hopena, ʻoiai ʻoi aku ka nui o nā hopena i ka mea hoʻohana.
  5. Inā ʻoe e hoʻohana nei i kahi waihona SQL no ka ʻimi ʻana, pono e hoʻāʻo maikaʻi ʻia kekahi hoʻololi code e pili ana i kēia ʻāpana no ka hana ʻana ma ka nui o ka ʻikepili kūpono (ma mua o ka nui o ka waihona ola). He mea maikaʻi nō hoʻi e hoʻohana i ka nānā ʻana i ka manawa hoʻokō nīnau ma nā manawa āpau o ka waihona, a ʻoi aku hoʻi ma ka "ola". ʻOiai inā maikaʻi nā mea a pau me nā hoʻolālā nīnau i ka pae hoʻomohala, i ka ulu ʻana o ka nui o ka ʻikepili, hiki ke loli ke kūlana.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka