Tengo un algoritmo para recorrer unas tablas, hecho de modo recursivo pero
necesito hacerlo lo mas eficiente posible. Cualquier idea es bienvenida.
Debo construir un conjunto de los items relacionados con un un item x.
Para construirlo, debo buscar los que están relacionados, y si el
PesoRelacion es > PesoItem, debo agregar los que esten relacionados con ese
item.
Esto sigue hasta que:
- PesoRelacion < PesoItem
- Ya se han "expandido" todos los items.
Ojo: por un mismo item se puede pasar varias veces. Aunque solo tengo que
expandirlo una sola vez.
Tengo 2 tablas:
Items ( ItemID, PesoItem)
Relationships ( Item1, Item2, PesoRelacion)
Sub Main()
BuscarItemsRelacionados(Item)
end sub
Function IncluirItem(Item)
' Guarda los items que han sido expandidos
' Devuelve true, si el item no estaba y lo incluyo
' Devuelve False, si el item ya estaba
Sub IncluirItemFinal(Item)
'Guarda los items que NO fueron expandidos.
Sub BuscarItemsRelacionados(Item)
Dim idit As Integer
If IncluirItem(idItem) Then
' Buscar los items relacionados directamente
Set rlinks = CurrentDb().OpenRecordset("Select iditem1, iditem2,
linkweight from linkweight where iditem1 = " & idItem & " or iditem2 = " &
idItem)
While Not rlinks.EOF
If rlinks.iditem1 = idItem Then
idit = rlinks.iditem2
Else
idit = rlinks.iditem1
End If
If rlinks.linkweight < GetItemTh(idit) Then
IncluirItemFinal (idit)
Else
BuscarItemsRelacionados(idit)
End If
rlinks.MoveNext
Wend
End If
End Sub
Esto ya hace lo que quiero. Pero el problema es que la tabla de items puede
ser de mas de 1 millon de items.
No lo puedo hacer de modo recursivo. Me pueden ayudar?
Cual seria la mejor manera de hacerlo?
Gracias.
amota
Leer las respuestas