Есть много вещей, которые вы можете сделать. Во-первых, если вы регулярно проводите поиск по имени человека, подумайте о том, чтобы разделить свою таблицу на первые или первые несколько букв имени лица. См. Partitioning Types.
Например, поскольку Целые гораздо быстрее искать по, можно сделать поле, называемым name_abbr, что является SMALLINT, который представляет лицо, первые 2 или 3 буквы имени. Вы должны индексировать и разделять это поле! Итак, aaa будет 1, aab будет 2 и так далее. Ваш запрос будет выглядеть следующим образом:
SELECT * FROM Table WHERE name_abbr=123 AND name LIKE 'foo%';
Теперь, это ударит правильный раздел и LIKE будет иметь только проверить на гораздо меньшем наборе записей.
Есть много других вещей, которые вы можете сделать, но помните, что с большими наборами данных всегда лучше разбивать данные на группы и всегда стараться использовать целые числа для запросов, когда это возможно. Кроме того, обязательно используйте ключевое слово EXPLAIN, чтобы убедиться, что ваши запросы используют индексы и разделы, которые вы хотите использовать.
Это, скорее всего, будет зависеть от запроса/того, сколько места занимает ваш индекс/сколько у вас памяти или что еще делает машина/какая у вас дисковая система или несколько десятков других вещей. Лучшее, что вы можете сделать, если вы не хотите, чтобы полная догадка была проверкой с использованием вашего собственного оборудования. –