Custom field type: Link or Select

I have this field for choosing options. The options are kept in a reference doctype.
The option values are dynamically filtered and populated according to certain value in other field.

It can be done in 2 ways:

  1. with Select field type and use set_field_options to populate the options, or
  2. with Link, and use set_query to filter the docs in this field.

My question:

  • What is the best practice for such requirement?
  • Which is more efficient if the values in the reference doctype are thousands (but when filtered/queried will only result in max 30 options/values).

Thank you

Option 2.
Link field + set_query to filter values.

In my mind:

  • option 1 (select field) will retrieve all thousands of values and return only the filtered ones.
  • option 2 (link field) will retrieve only the filtered values.

Are these correct?