Extra field in wp_post instead of postmeta

This is extremely broad question. Query performance depends on what you are querying and how efficiently MySQL server can perform that, using indexes available. You can have wildly inefficient query on one table, just like you can have perfectly fast one against meta.

In general WP development the typical practices go (in popularity descending):

  1. Making use of native database schema
  2. Introducing new indexes
  3. Introducing new tables
  4. Modifying native tables