в случае с условием 1 млн от 0 до 999999 лучше все сгененрировать и перемешать заранее.
а вот если вам надо действительно много билетов, то вам может помочь GUID/UUID, благо где он только не реализован всеми возможными способами.
Можно попробовать mongodb. Там есть и географический индекс и шардинг. А вообще набор этих точек часто меняется? И насколько остро стоит вопрос производительности. А то можно и на каждом сервере в память загнать из файла. А также можно разбить их на тайлы и предрасчитать количество точек в каждом тайле. Получится некоторое подобие гиперкуба OLAP.
Надеюсь, фраза "пхп-обработчик, который открывает базу, проверяет сколько там уже лайков (дислайков), добавляет ещё один, записывает то что получилось и возвращает то, что получилось, вызывавшему скрипту" не означает что-то типа такого (псевдокод)
counter = sql("select like_count from table where ...");
counter += 1
sql("update table set like_count="+counter+"where ...");
return counter;