I’m creating tables using phpMyAdmin and want to define two different columns as indices. I’m not trying to create a multi-column index but phpMyAdmin creates them as such. Are there any possible issues with that? The fields don’t relate to each other directly and both fields will not be used in WHERE clauses simultaneously.
Consider:
ALTER TABLE `documents` ADD INDEX (`offer_number`, `contract_number`);
And:
ALTER TABLE `documents` ADD INDEX (`offer_number`);
ALTER TABLE `documents` ADD INDEX (`contract_number`);
What’s the difference?
MySQL can only make use of an index if the first column(s) of the index match the columns used in the query. In other words, if you perform a query where an index on
contract_numbercould be used, the composite index won’t be used sincecontract_numberis not the first column in that key. The composite index could be used for a query whereoffer_numberis used, however.