Lord Max
Guest
Вопросы Эффективности и Быстродействия
Доброго времени суток Пиплы!
Возникла необходимость узнать Ваше мнение по ряду вопросов, которые у меня возникли. Я решил, что ответы на эти вопросы сумеют дать люди уже сталкивающиеся с данными проблемами или же те, кто знает теорию лучше, чем я.
Вопрос №1___Использование Foreign key или огромной таблицы.
У меня есть БД, в которой есть таблица пользователей с паролями, уровнями доступа, персональной информацией, статусом, полями информации для статистики и тд. (всего 68) А так же есть таблица (часто используемая) с вещами этих (существующих) пользователей, то есть по-сути идёт дублирование полей пользователей. Вопрос такой, как поступить, разбить таблицу пользователей на тематические: личная инфа, списки вещей, данные статистики и тд, при этом количество запросов возрастёт соответственно, или же слить ВСЕ, что касается пользователей в 1 большую таблицу, даже если количество полей перегребёт за 100 и ‘селектать’ конкретные поля для разных страниц проекта (там, где требуется инфа по статистике – поля статистики, там, где список вещей – список вещей и тд.) Где правда ? Какой из вариантов наиболее эффективный, если подразумевается не ‘сильный’ сервер и большое количество обращений. Что «тормозит» при создании 100 и более полей в таблице? Может у меня банан в мозгу и можно просто использовать сложный запрос ? В какую сторону смотреть ?
Вопрос №2___Злоупотребление функцией Split.
Подоснова этому вопросу предыдущий вопрос. В целях уменьшения количества полей, я очень часто пишу в поле тематически схожие данные, чтобы затем «распилить» их сплитом. Насколько этот выход оправдывает себя ? Может лучше отказаться от сплита и это снизит время выполнения скрипта ? Но тогда количество полей увеличится в разы!
Вопрос №3___MySQL  Кириллица  PHP  Flash
Возможно, Вы знаете как это правильно делается. Используя юникод у меня получается «забить» во flash русские буквы, но вот переменная из БД этого делать не хотит и выводит во флэше полную лажу 
Вопрос №4___Индексы
Оправдано ли использование большого количества индексов для различных целей, разумеется, для поиска конкретных записей, или же лучше постараться обойтись парой-тройкой?
Вопрос №5___VARCHAR или TEXT
Стоит ли пользоваться длинным (80 и более символов) VARCHAR, если данные в этом поле могут быть и длинными и короткими, что «ест» больше памяти, что более эффективно?
Вопрос №6___mysql_close();
Нужно ли в конце каждого скрипта закрывать соединение с БД ? Или это делается автоматом ? Какие ресурсы освобождаются ? Или освобождаются ли ?
Вопрос №7___Большие массивы
Сильно ли тормозит выполнение скрипта большой массив «гуляющий» по функциям и методам классов ? Или стоит задуматься над сокращением ? Можно ли передавать функции весь массив, если из него требуется только несколько элементов или же лучше передавать нужные элементы отдельно ?
P.S. У меня Apache (ver2) + MySQL (ver4) + PHP (ver5) под виндой.
P.S.S. Я полностью отдаю себе отчёт в том, что много из того, что я спрашиваю является базисом, но у меня есть оправдание, многое пришлось учить на ходу с полного «0». И я решал проблемы по мере их поступления, то есть узконаправленно шёл к достижению конкретной цели. В идеале я должен был полностью изучить специфику mysql и php от самых основ, тогда, возможно и не задавал бы глупых вопросов, но нехватка времени привела к тому, что я имею кучу пробелов в знаниях, которые возможно, Вы мне поможете заполнить. Буду рад любому ответу, лишь бы в тему.
Доброго времени суток Пиплы!
Возникла необходимость узнать Ваше мнение по ряду вопросов, которые у меня возникли. Я решил, что ответы на эти вопросы сумеют дать люди уже сталкивающиеся с данными проблемами или же те, кто знает теорию лучше, чем я.
Вопрос №1___Использование Foreign key или огромной таблицы.
У меня есть БД, в которой есть таблица пользователей с паролями, уровнями доступа, персональной информацией, статусом, полями информации для статистики и тд. (всего 68) А так же есть таблица (часто используемая) с вещами этих (существующих) пользователей, то есть по-сути идёт дублирование полей пользователей. Вопрос такой, как поступить, разбить таблицу пользователей на тематические: личная инфа, списки вещей, данные статистики и тд, при этом количество запросов возрастёт соответственно, или же слить ВСЕ, что касается пользователей в 1 большую таблицу, даже если количество полей перегребёт за 100 и ‘селектать’ конкретные поля для разных страниц проекта (там, где требуется инфа по статистике – поля статистики, там, где список вещей – список вещей и тд.) Где правда ? Какой из вариантов наиболее эффективный, если подразумевается не ‘сильный’ сервер и большое количество обращений. Что «тормозит» при создании 100 и более полей в таблице? Может у меня банан в мозгу и можно просто использовать сложный запрос ? В какую сторону смотреть ?
Вопрос №2___Злоупотребление функцией Split.
Подоснова этому вопросу предыдущий вопрос. В целях уменьшения количества полей, я очень часто пишу в поле тематически схожие данные, чтобы затем «распилить» их сплитом. Насколько этот выход оправдывает себя ? Может лучше отказаться от сплита и это снизит время выполнения скрипта ? Но тогда количество полей увеличится в разы!
Вопрос №3___MySQL  Кириллица  PHP  Flash
Возможно, Вы знаете как это правильно делается. Используя юникод у меня получается «забить» во flash русские буквы, но вот переменная из БД этого делать не хотит и выводит во флэше полную лажу 
Вопрос №4___Индексы
Оправдано ли использование большого количества индексов для различных целей, разумеется, для поиска конкретных записей, или же лучше постараться обойтись парой-тройкой?
Вопрос №5___VARCHAR или TEXT
Стоит ли пользоваться длинным (80 и более символов) VARCHAR, если данные в этом поле могут быть и длинными и короткими, что «ест» больше памяти, что более эффективно?
Вопрос №6___mysql_close();
Нужно ли в конце каждого скрипта закрывать соединение с БД ? Или это делается автоматом ? Какие ресурсы освобождаются ? Или освобождаются ли ?
Вопрос №7___Большие массивы
Сильно ли тормозит выполнение скрипта большой массив «гуляющий» по функциям и методам классов ? Или стоит задуматься над сокращением ? Можно ли передавать функции весь массив, если из него требуется только несколько элементов или же лучше передавать нужные элементы отдельно ?
P.S. У меня Apache (ver2) + MySQL (ver4) + PHP (ver5) под виндой.
P.S.S. Я полностью отдаю себе отчёт в том, что много из того, что я спрашиваю является базисом, но у меня есть оправдание, многое пришлось учить на ходу с полного «0». И я решал проблемы по мере их поступления, то есть узконаправленно шёл к достижению конкретной цели. В идеале я должен был полностью изучить специфику mysql и php от самых основ, тогда, возможно и не задавал бы глупых вопросов, но нехватка времени привела к тому, что я имею кучу пробелов в знаниях, которые возможно, Вы мне поможете заполнить. Буду рад любому ответу, лишь бы в тему.