08. Листопад 2010 · Коментарі Вимкнено до яка різниця між char та varchar? · Categories: PHP-програмування, Роздуми на вільну тему · Tags: , , ,

сьогодні вирішив почитати про бази даних книжечку (називається Wrox Beginning SQL). а надихнуло мене те, що хотів я трохи оптимізувати базу даних на одному своєму сайті та створити ще додатково кілька таблиць для версій сайту для інших мов. потім подумав про перспективу сайту, про те, що, можливо, доведеться додавати багато записів, а тоді згадав, що проблемно буде додавати, видаляти або оновлювати записи, тип яких був varchar, а не просто char. коротше, суть у тому, що char має сталий розмір, якщо, скажімо, вказано, що char(100), а ми додамо лише 20 символів, то решта 80 зарезервованих просто заповняться пробілами. а з varchar трохи складніше, бо якщо вказано, що varchar(100), а додано буде лише 20, то так і буде додано 20, але без проміжків (пробілів). виходить, що дані відразу записуватимуться після цих 20 (ну, з технічної точки зору) символів, а якщо щось видалятиметься чи перезаписуватиметься більшим, то частина буде записана замість цих 20, а інша частина – в іншому місці на диску, але з вказівкою на те місце. якщо логічно подумати, то замінити щось, що знаходиться в одному місці, простіше, ніж те, що знаходиться у двох місцях, правильно ж? от я й вирішив пошукати, як сильно відрізняється швидкість роботи з даними, що зберігаються як varchar або char, і виявилося, що різниця у швидкості може досягати 50%. звісно, цей відсоток залежить сильно також від розміру бази даних. спробував я протестувати це на тих таблицях, що в мене були: не скажу, що особливо відчув різницю, бо велетенських таблиць не знайшов, а табличка з кількома сотнями записів – не те, що треба для тестів, але різницю в кілька сотих секунди я помітив :)

Comments closed.