При тестировании моей простой почтовой MySQL базы данных я обнаружил странное поведение и был бы рад узнать, почему.
Моя таблица 'mail' имеет два первичных ключа:
idx : INT(Auto-Increment)
uid : VARCHAR(50)
снекоторые другие фиктивные столбцы, такие как созданный время, информация и т. д.
Затем я заполнил свою таблицу 200 000 фиктивных данных и проверил ее с помощью простого поискового запроса:
SELECT * FROM mail WHERE uid='RANDOMGENERATEDUID';
Потребовалось околоЗа 0,235 секунды для выполнения этого запроса и из табличного объяснения рабочей среды я обнаружил, что этот запрос выполняет сканирование полной таблицы и не использует ключей.
Мне было любопытно, что произойдет, если I force использовать столбец 'idx' для запроса SELECT, поэтому я протестировал другой запрос, который будет иметь тот же результат:
SELECT * FROM mail
WHERE idx IN (SELECT idx FROM foodwagondb.mail WHERE uid='RANDOMGENERATEDUID');
Но меня удивило то, что этот запрос выполняется намного быстрее, 0,078Секунду, чтобы выполнить!
Что здесь происходит у меня на глазах?Я был бы рад узнать, почему это происходит!