As a general case, learn the 3 Normal Forms and apply them at all times. The normal forms above 3 rd Normal Form are often called de-normalization forms but what this really means is that they break some rules to make the Database faster. Normalization after the 3 rd NF is often done at a later time, not during design. Only query what you really need Filter as much as possible Your Where Clause is the most important part for optimization. Be careful with joins Joins are expensive in terms of time.
Queries are very fast.
Generally, you can retrieve many records in less than a second, even with joins, sorting and calculations. As a rule of thumb, if your query is longer than a second, you can probably optimize it. Start with the Queries that are most often used as well as the Queries that take the most time to execute. If your query does Full Table Scans, indexes and proper filtering can solve what is normally a very time-consuming process. All primary keys need indexes because they makes joins faster.