What is an efficient data structure for prefix matching?
A trie is asymptotically optimal for this.  No data structure can achieve better asymptotic running time.

If you care about constant factors, the only way to know what will be optimal is to try multiple approaches and benchmark them.  Standard theoretical running time analysis is not reliable at predicting constant factors.

Another data structure to consider is to store every prefix of each word in a hashtable.  This will increase the space usage by about 10x (if the average word length is 10) but might speed up lookups in practice.  The asymptotic running time will remain the same.  You'll have to decide whether you're willing to trade off space for time.

Suffix trees and suffix arrays don't seem relevant.  You're asking about prefix matching, not suffix matching or matching in the middle of the string.