O dado do usuário irá percorrer toda a lista até achar seu idêntico na tabela, retornando um valor para a aplicação. Para que não percorra milhares de itens toda vez, planejo dividir em várias pequenas tabelas que se iniciam com a letra do alfabeto, e sequência de dois caracteres, (A, B, C… AA, AB, AC...).

Confuso, esse trecho me fez pensar que você acha que um select vai percorrer todos os registros de suas tabelas até achar o valor solicitado. Mesmo sem indexação o sgbd tem maneiras eficientes para lidar com isso. Procure se atentar ao esquema do seu banco de dados, veja isso. E como o rapaz já falou, 10k de registros não é muita coisa para um mysql da vida. Outro ponto, já que seus links vão ocupar 60 bytes, no lugar de salvar os links "puros", vc pode salvar um hash, assim vai ter mais confiabilidade na hora de comparar. Por exemplo, você pode fazer isso

SELECT is_sec FROM tb1 WHERE link = user_link;