yo nunca tuve problemas, y eso que he visto consultas que son eternas, hay algunos que lo hacen en una sola linea, y eso esta mas que mal, ya que es practicamente "inseguible" la consulta. mis consejos son los siguientes:
1 - para hacer una consulta, si vas a usar el metodo de "concatenacion", te recomiendo usar en .NET el stringbuilder, ya que como debes saber, es infinitamente superior en velocidad al string comun (cuando se usa en bucle), por ejemplo si tenes que recorrer algun objeto con un bucle y al mismo tempo ir insertando datos y creas ese string en cada iteracion, con el string comun tardas muchisimo mas.
2 - en visual basic 6 como no existe stringbuilder, y la verdad no he encontrado forma de optimizarlo, o sea las consultas las hago con la famosa concatenacion, pero para que sea bien entendible tenes que ordenar la consulta, si la ordenas no creo que tengas problemas de entenderla, aca te paso un ejemplo de una consulta ordenada:
Dim vSQL As String
vSQL = " SELECT loc.idlocalidad,loc.nombre AS nombrelocalidad,pro.idproducto,pro.nombre AS nombreproducto,"
vSQL = vSQL & " COUNT(DISTINCT(cd.idpdv)) AS visitados,"
vSQL = vSQL & " COUNT(DISTINCT(CASE WHEN cd.entrega>0 THEN cd.idpdv END)) AS Alcance"
vSQL = vSQL & " FROM censosdetalle cd"
vSQL = vSQL & " INNER JOIN pdv p ON cd.idpdv=p.idpdv"
vSQL = vSQL & " INNER JOIN localidades loc ON p.idlocalidad=loc.idlocalidad"
vSQL = vSQL & " INNER JOIN productos pro ON cd.idproducto=pro.idproducto"
vSQL = vSQL & " WHERE 1=1"
vSQL = vSQL & " AND cd.idproducto IN (" & vIdProElegidos & ")"
vSQL = vSQL & " AND loc.idlocalidad IN (" & vIdLocElegidas & ")"
vSQL = vSQL & " GROUP BY loc.idlocalidad,loc.nombre,pro.idproducto,pro.nombre"
vSQL = vSQL & " ORDER BY loc.idlocalidad,pro.idproducto"
no es una consulta grande, hay consultas 10 veces mas grandes, pero como ves es mucho mejor que hacerla en una sola linea como hacen algunos.
en .NET eso lo haces igual, pero con un objeto stringbuilder y el .Append, por las dudas para reiniciar el stringbuilder en el comienzo de cada iteracion tenes que poner el .Lenght = 0
saludos.