Мне нужно осколить поле варчара некоторым количеством осколков. Например, если бы у меня было поле pk с автоинкрементом, я мог бы сделать:
SELECT * FROM table WHERE id % num_shards = NUM
Однако у меня нет текстового поля, поэтому я надеюсь, что смогу получить какую-то цифру c вывод из поля - текст engli sh и довольно равномерно распределен. Возможно я мог сделать md5 поля и получить значение int этого? Я попытался сделать:
# needs to be sharded by 'hour of the week'
SELECT field FROM table where CAST(MD5(field) AS UNSIGNED) % 177 = 6
Это выглядит очень равномерно распределенным ... за исключением 0, где в итоге получается около половины значений. Что было бы лучшим вариантом?