Well, Mathematica does a very general check of the expression to find any part that it can simplify. So if your expression contains too many radicals and Log function, it would be fairly difficult to handle since you might not be aware of the really complicated conditions which requires too much computation. A good idea is always to simplify this type of problem at first step.
At first glance the up limit of the integral can be simplified. They do not have dependance. I will just go ahead the do the integral separatedly:
Integrate[x y/Sqrt[x^2 + y^2 + d + x*y*w], x]
Then I will have a result. Use
Rule and Replace functions to find the value of the first step integral (I just copy and paste the results):
Then you can copy the above two expressions into the new integrate function:
Integrate[
y (Sqrt[a^2 + d + a w y + y^2] -
1/2 w y Log[2 a + w y + 2 Sqrt[a^2 + d + a w y + y^2]]) -
y (Sqrt[d + y^2] - 1/2 w y Log[w y + 2 Sqrt[d + y^2]]), y]
The result is
Finally, if you really want to have the up limits to be your version, you just need to use the rule function again:
<aforementioned results>/.{a->XXX,b->YYY}
The problem you can see here is that once Mathematica does the symbolic computation, it basically keeps everything there and perhaps more than that you are aware of. Moreover the dependances of the radicals and wrapped Log and fractional power really makes a direct way cheesy.