Как прокомментировал @arkascha: использование LIKE не является хорошим для производительности ... Как говорится, вот несколько возможных оптимизаций для вашего варианта использования.
1) Использовать реальные JOINы
FROM u_info_one as uio, u_info_two as uit
WHERE
uio.u_id=uit.u_id
Вы хотите использовать СОЕДИНЕНИЯ вместо перекрестных СОЕДИНЕНИЙ старого стиля с предложением WHERE;в зависимости от вашей РСУБД и данных это может работать лучше.
2) Использовать соответствующие типы данных
AND `u_flag`!='0'
Вы сравниваете строки, но похоже, что u_flag долженбыть числовым полем, может быть TINYINT (1).Меньшие типы данных ускоряют поиск, и сравнение чисел обычно более эффективно, чем строки.Проверьте определение этого поля в своей таблице.
3) Индексируйте критерии поиска
Требуется индекс для поиска по столбцам в обеих таблицах.Я не могу точно сказать, какие столбцы принадлежат к какой таблице, поскольку не все ваши идентификаторы заключены в кавычки, но один (возможно, составной) индекс для таблицы должен быть в порядке, например:
CREATE INDEX idx_info_one ON info_one(u_fname, u_flag);
Вот ваш обновленный запрос:
$select_query=
"SELECT *
FROM
u_info_one as uio
INNER JOIN u_info_two as uit
ON uio.u_id=uit.u_id
WHERE
u_fname LIKE '%".$s1."%'
AND uio.`u_id`!='{$_SESSION["u_id"]}'
AND `u_flag`!=0";