I think that you would really need to benchmark it yourself (there are surely other factors that will determine the performance of your specific queries on your specific data), but in addition to the idea of using a composite 3 column index proposed by @mb14. You could try this:
Create a new column on your table like this:
xyzcomposite BINARY(16)
Then, create your index on this column.
On inserts, you would need to do an additional step to concat to your string "x_y_z" and then insert like this:
INSERT INTO yourtable (...,xyzcomposite) VALUES (...,UNHEX(MD5('the_xyz_concat')));
Of course you would also need to run the hash algorithm before your select statement as well.
set @xyz = UNHEX(MD5('x_y_z'));
select * from yourtable where xyzcomposite = @xyz
I'm not sure if the sum total of this overhead is worth the performance gain you may see in having to index only this one column vs. a three column index. Like I said you would have to benchmark it against your table and your data.
EDIT: the advantage of this approach is that it would work for x, y and z numbers of any size.