Вы хотите, чтобы для каждого из столбцов (Column1, Column2, Column3) был поиск индекса, а не сканирование таблицы для такой большой таблицы.
Проблема состоит в том, что один запрос будет использовать один индекс.
Если вы сделаете один индекс больше (Column1, Column2, Column3), он все равно будет выполнять сканирование таблицы для каждого поиска, поскольку при использовании индекса для, например, Column1, он все равно должен проверять ключевое слово поиска в Column2 иColumn3 тоже в то же время, и они не заказаны.- индекс упорядочен только для столбца 1;Столбец 2 и Столбец 2 расположены в случайном порядке
Таким образом, у вас есть 2 решения: либо вы измените макет таблицы, чтобы у вас не было Столбца 1, Столбца 2 и Столбца 3, а только один столбец с ключевым словом поиска: cname, и есливам нужно знать, был ли это столбец 1,2 или 3, затем добавьте другой столбец с целым числом, которое говорит 1,2 или 3. Поместите индекс в этот столбец cname, и ваши поиски будут идти быстро.Но в зависимости от других ваших столбцов это может означать, что вы дублируете некоторые данные.
Это то, что я бы сделал.Если этого недостаточно, тогда даже разделите таблицу, чтобы у вас была только таблица (id, cname), и, используя идентификатор, вы можете искать другие нужные вам столбцы из другой таблицы.Если таблица становится слишком длинной, вы можете даже разделить ее, создайте cnameAM, который содержит слова, начинающиеся с A до M, и cnameNZ, который содержит остальное.
Если вы не можете изменить макет таблицы: вместо использования 1запрос, используйте несколько запросов
Поместите индекс для каждого столбца и используйте 3 запроса.Поэтому создайте индекс для (id, Column1), создайте индекс для (id, Column2) и (id, Column3) и выполните:
SELECT * FROM 'SearchTable' WHERE Column1='$SearchKeyword'
SELECT * FROM 'SearchTable' WHERE Column2='$SearchKeyword'
SELECT * FROM 'SearchTable' WHERE Column3='$SearchKeyword'
эти 3 выбора будут выполняться очень быстро, поскольку каждый из них выполняетпоиск по их конкретному индексу, а затем присоединение к 3 наборам результатов для дальнейшей обработки или поиск дополнительных столбцов с использованием идентификаторов, которые вы получили