Depende.
Variável # 1: Se o MySQL optar por criar o (s) índice (s) em tempo real, ou esperar até que todos os dados estejam inseridos, faça uma classificação, etc., para criar o índice. Nota: Índices UNIQUE (eu acho) precisam ser criados dinamicamente para que a UNIQUEness possa ser verificada. A PRIMARY KEY for InnoDB é armazenada com os dados (ou você pode indicar o contrário), de modo que DEVE ser construído aleatoriamente.
Variável # 2: o Índice rastreia os dados (por exemplo, AUTO_INCREMENT ou timestamp) versus aleatório (GUID, MD5) ou em algum lugar intermediário (número da peça, nome, friend_id).
Variável # 3 (se o índice for criado em tempo real): o índice pode caber no cache (key_buffer ou innodb_buffer_pool) ou pode derramar no disco.
Os índices que rastreiam os dados são eficientes e virtualmente lineares, independentemente da resposta ao número 1.
Ids aleatórios são uma dor. Se o índice não couber no cache, o tempo para compilá-lo será muito pior que o linear, independentemente das outras variáveis. (Eu discordo de Rolando neste caso.) Uma enorme tabela do InnoDB com um GUID para o PK é dolorosamente lenta para INSERIR no plano em 100 linhas / s para discos comuns; talvez 1000 se você tiver SSDs. CARREGAR DADOS e INSERTs em lote não ultrapassarão a lentidão do armazenamento aleatório.
3,53 a 5,6 - pouco mudou.
Fusos múltiplos? A distribuição de RAID é melhor em quase qualquer situação do que atribuir manualmente isso aqui e aquilo para lá. A divisão manual leva a situações desequilibradas - uma verificação de tabela está presa no disco de dados; uma operação somente de índice está presa no disco de índice; uma consulta solitária primeiro atinge o disco de índice, depois o disco de dados (sem sobreposição); etc.