First you should get used to using the new syntax for writing joins as eventually the old syntax (which you used) will no longer be supported.
INNER JOIN b ON a.xx = b.xx</pre>
As for why this is slow you probably don’t have the correct indexes on table b. Also if there are a lot of records is each table all those records have to be transferred to your client.
Because you have the SELECT * in there, if either table has the clustered index created on a column other than xx SQL will have to do either a clustered index scan (which is slow) or a Key lookup (which is also slow) to find all the data. Recreate an index on on both tables on the column xx and include the columns you need to return to the client. Then change the SELECT * to return only the columns you need.