Но проверить легко:
индексы делаются для чего? Чтобы ускорить поиск.
0) Создаёте таблицу, пишете в неё побольше чего-нибудь случайного (в зависимости от производительности тестовой машины)
1) Делаете апдейт по условию какому-нибудь (желательно, не по PK, для наглядности), затрагивающий 1 или несколько строк.
2) строите индекс по полю
3) повторяете апдейт
4) сравниваете время выполнения
А ведь туплю и никто не поправляет — set и есть битовая маска по bigint, 64-битовое значение же.
Так что или раскидать по некоторому признаку или разворачивать полную реляционную структуру и таблицы значений и таблицы связей.
Это, само собой, если нужны М-М.
Я примерно догадываюсь, что к материнке.
Вопрос — к чипсетным разъемам или к реализованным другим контроллером?
А так же:
0) при прямом подключении к этому порту — работает? Т.е. жив ли сам SATA порт?
1) подключались разъёмы наживую? Или к выключенной машине?
2) контроллер работает как AHCI? Или эмуляция ATA?
ай, рано отправилось.
В общем — если сделать надо именно запросом, то такова идея.
Но, скорей всего, будет выгоднее инвертировать порядок в обработчике.
А запасной диск делается автоматически.
Если в массив на 2 диска сделать --add третьего — третий будет добавлен как запасной. Но синхронизироваться будет только в случае умирания одного из рабочих.
Потому, если задача — ещё больше защиты от смерти винта и уменьшение даунтайма — расширяйте массив на количество дисков. Благо raid1 расширяется без проблем.