Does index need to cover all columns selected?
Short answer:  No.

Long answer:


A "covering" index is usually better than a non-covering one.
A covering index for the query you mention would contain all the columns in the table.  This is usually a 'bad' idea if there are more than, say, 5 column.


But...  I suspect that is not the real problem, nor the real question.

What is the DATATYPE of phonenumber?  I suspect it is VARCHAR(...), correct?  Yet you are asking for a numeric comparison by saying where phone_number = 98371381.

Add quotes (and make sure it is indexed):  where phone_number = "98371381".  Based on the table name, I suspect that the that is the PRIMARY KEY?  If so, simply PRIMARY KEY(phone_number) is better than any "covering" index.

Always provide SHOW CREATE TABLE when asking performance questions.  Else, we have to guess at too many things (datatype, PK, number of columns, engine, etc).