1 - моя таблица имеет идентификатор первичного ключа: на самом деле бесполезно, если вы не используете схему, для которой требуется числовой первичный ключ
2 - моя таблица имеет уникальный серийный ключ: идентификатор также уникален по определению; почему бы не использовать серийный в качестве основного? Этот автоматически индексируется, потому что вы определили его как уникальный.
3 - я хочу выполнить запрос к другим полям, например, где param_12 не похож на '% I.S%' или где param_13 = '1': запрос like '%something%'
не может действительно использовать индекс; есть ли способ, которым вы можете изменить param12 на param12a, который является первым%, и param12b, который равен 'I.S%'
? Индекс можно использовать в операторе like, если начальная строка известна.
4 - 200 000 невелико, и именно поэтому я удивлен: да, 200 000 не так уж много. Но без хороших индексов, запросов и / или размера кэша MySQL потребуется для чтения всех данных с диска для сравнения, что является медленным.
5 - у меня даже проблема при добавлении простого поля: мой вопрос
6 - могу ли я создать INDEX для полей BOOL? Да, вы можете, но индекс, который соответствует половине времени, довольно бесполезен, индекс используется для ограничения количества записей, которые MySQL должен загружать максимально полно; если индекс существенно не ограничивает это число, как это часто бывает с логическим значением (в распределении 50-50), использование индекса требует только большего дискового ввода-вывода и может замедлить поиск. Поэтому, если вы не ожидаете что-то вроде распределения 80-20 или лучше, создание индекса будет стоить времени, а не выигрыша.