If I'm retrieving a single item from my table based on the indexed hash key, is there a performance difference between query() or getItem()?
getItem will be faster
getItem retrieve via hash and range key is a 1:1 fit, the time it takes (hence performance) to retrieve it is limited by the hash and sharding internally.
Query results in a search on "all" range keys. It adds computational work, thus considered slower.