sql >> Base de Datos >  >> NoSQL >> MongoDB

Rendimiento terriblemente degradado con otras condiciones de unión en $búsqueda (usando canalización)

La segunda versión agrega una ejecución de tubería de agregación para cada documento en la colección unida .

La documentación dice:

La canalización se ejecuta para cada documento de la colección, no para cada documento coincidente.

Dependiendo de qué tan grande sea la colección (tanto el número de documentos como el tamaño de los documentos), esto podría llevar una cantidad de tiempo decente.

Tiene sentido:todos los documentos adicionales debido a la eliminación del límite también deben tener la canalización de agregación ejecutada para ellos.

Es posible que la ejecución por documento de la canalización de agregación no esté tan optimizada como debería. Por ejemplo, si la canalización se configura y se desarma para cada documento, fácilmente podría haber más gastos generales en eso. que en las condiciones de $match.

La ejecución de una canalización de agregación por documento unido proporciona flexibilidad adicional. Si necesita esta flexibilidad, puede tener sentido ejecutar la canalización, aunque el rendimiento debe tenerse en cuenta independientemente. Si no lo hace, es sensato utilizar un enfoque de mayor rendimiento.