Я считаю, что структура btree будет другой, потому что она должна сравнивать значения столбцов по-разному.
Посмотрите на эти два плана запроса:
mysql> explain select * from sometable where keycol = '3';
+----+-------------+-------+------+---------------+---------+---------+-------+------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+---------+---------+-------+------+--------------------------+
| 1 | SIMPLE | pro | ref | PRIMARY | PRIMARY | 66 | const | 34 | Using where; Using index |
+----+-------------+-------+------+---------------+---------+---------+-------+------+--------------------------+
mysql> explain select * from sometable where binary keycol = '3';
+----+-------------+-------+-------+---------------+---------+---------+------+-------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+------+-------+--------------------------+
| 1 | SIMPLE | pro | index | NULL | PRIMARY | 132 | NULL | 14417 | Using where; Using index |
+----+-------------+-------+-------+---------------+---------+---------+------+-------+--------------------------+
Если мы изменим параметры сортировки для сравнения, внезапно он больше не сможет искать индекс и будет сканировать каждую строку. Фактические значения, хранящиеся в индексе, будут одинаковыми, например, независимо от параметров сортировки, поскольку он все равно будет возвращать значение в исходном регистре независимо от того, использует ли он регистр с учетом регистра или без учета регистра.
Так что поиск сопоставления без учета регистра должен быть немного менее эффективным.
Однако я сомневаюсь, что вы когда-нибудь сможете заметить разницу; обратите внимание, что MySQL делает все без учета регистра по умолчанию, поэтому влияние не может быть таким ужасным.
UPDATE:
Вы можете увидеть аналогичный эффект для заказа по операциям:
mysql> explain select * from sometable order by keycol collate latin1_general_cs;
+----+-------------+-------+-------+---------------+---------+---------+------+-------+-----------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+------+-------+-----------------------------+
| 1 | SIMPLE | pro | index | NULL | PRIMARY | 132 | NULL | 14417 | Using index; Using filesort |
+----+-------------+-------+-------+---------------+---------+---------+------+-------+-----------------------------+
mysql> explain select * from sometable order by keycol ;
+----+-------------+-------+-------+---------------+---------+---------+------+-------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+------+-------+-------------+
| 1 | SIMPLE | pro | index | NULL | PRIMARY | 132 | NULL | 14417 | Using index |
+----+-------------+-------+-------+---------------+---------+---------+------+-------+-------------+
Обратите внимание на дополнительную стадию 'filesort', необходимую для выполнения запроса. Это означает, что mysql помещает в очередь результат во временном буфере и сортирует его сам, используя быструю сортировку на дополнительном этапе, отбрасывая независимо от порядка индекса. Используя исходное сопоставление, этот шаг не требуется, поскольку mysql изначально знает порядок по индексу.