Нет недостатков при установке его на по умолчанию , так как это имеет значение, только если вы не установите для него значение.
Если значение становится NULL, это может повлиять на поиск. Это связано с тем, что MySQL просматривает файлы, и пропустить поля известной длины легко, поскольку вы просто перепрыгиваете через эту длину. Но если столбец может содержать значение NULL, то это необходимо проверить перед выполнением перехода. Хотя это не занимает много времени, поэтому я не думаю, что это так важно.
Преимущество - экономия места, но хранение дешевое. В конце концов, это 2009 год.
Самый быстрый способ поиска вещей - это установить все столбцы NOT NULL, и вместо этого использовать такие вещи, как пустые строки и -1 (или даже 0, если это не означает что-то другое) для хранения «нулевых» значений. Это не займет намного больше места и всегда быстрее, потому что длина данных гарантируется.
Хотя, если ваша база данных относительно мала и ей не нужно фильтровать 800 миллионов строк за 2 миллисекунды, используйте значения NULL. ;)