Subdivision surface for STL files
Subdividing an existing mesh further won't do anything because you're not adding additional detail, just representing the same thing with more triangles. Subdividing as "preparation" doesn't make much sense. You should make sure the mesh is created with sufficient detail while modelling.

A mesh created for 3d printing should generally have a lot more triangles than one created for use in rendering, but within reason. It doesn't make sense to make the mesh (much) more detailed than the printer can print, and similarly having lots of triangles can make the slicer slow or unreliable. As a very rough guideline, I would say that 10.000-100.000 triangles per model is reasonable (but this obviously depends on the size and level of detail).

Some slicers may output G-code that will have segments corresponding to each and every triangle in the model, even if these segments are very tiny. This may cause the printer to slow down a lot while printing, but most slicers take care of this by merging small segments into larger ones. Depending on your slicer, you might have to watch out for not having the triangles be so tiny that the number of segments created becomes a problem.