mysql - Is it better to JOIN on id or to save string value -


i have table mvuser wih attributes user_id (int) (primary_key), username (varchar) (key), email (varchar),..., table job attributes job_id (int) (primary_key), job_name (varchar) (key) , table user_job.

is better table user_job have attributes user_id (int), job_id (int), or have attributes username (varchar), job_name (varchar) , why? 1 faster?

table user_job queried username or job_name, example:

select job_name user_job user_job.username='username' 

or

select job_name user_job join mvuser on mvuser.user_id = user_job.user_id                               join job on job.job_name = user_job.job_name                 username='username' 

and similar when query users job_name.

i know solution user_id (int), job_id (int) better if username , job_name can changed, in case can't, permanent.

you should prefere joining on user_id , job_id primary key , indexed default (always try join on indexed columns) integer comparison faster string comparison.

if usernames unique optimize where clause using user_id instead of username (as user_id indexed , username not). otherwise speed query if create index on username.

but general practice is:

if don't have performance problem, don't on optimize , ceep readable.

if have performance problem, need measure before , after optimization. if can't measure improvement theoretical speedup not your real problem.


Comments

Popular posts from this blog

java - Oracle EBS .ClassNotFoundException: oracle.apps.fnd.formsClient.FormsLauncher.class ERROR -

c# - how to use buttonedit in devexpress gridcontrol -

nvd3.js - angularjs-nvd3-directives setting color in legend as well as in chart elements -