The effect you're describing is called magnetic saturation. This is the point where increasing the external magnetic field doesn't increase the magnetisation of your ferromagnet becaused all the domains are aligned and no further increase in the net alignment is possible. 

Iron saturates at around 2 Tesla. This is a property of the material so the shape of the piece of iron doesn't make any difference.

The field at the centre of  solenoid is $B = \mu n I$, and the graph in the linked article shows the required values of the product $nI$. For most materials it's some where in the range $nI = 50 - 100$ amp turns per inch.

Maximum magnetic strength achievable
I don't really know how to explain except with "vertical where".

Imagine the following table:

TAGID|PRODUCTID|SHOP_ID
59   |3418-7   |38
61   |3418-7   |38
60   |4227-4   |38
61   |4227-4   |38


Now I want to return all product IDs, that have relation to the tag IDs: 59,61. In other words, values of product ID where rows exist for both tag IDs.

So I want to return 3418-7, but not 4227-4

How do I write this as simple as possible in a SQL statement?

This is the working statement I have so far, but I feel this could be done in a much smarter way:

SELECT 
  productid 
FROM shop_tag_relations 
WHERE 
  productid IN (select productid from shop_tag_relations WHERE tagid=59) 
AND 
  productid IN (select productid from shop_tag_relations WHERE tagid=61)
GROUP BY productid,shop_id

