[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вопрос для гуру пхп и мускул (оптимизация)
zerg
добрый день, у меня целая куча вопросов о оптимизации скриптов и мускул

Стоит ли делать проверку к примеру есть ли пользователь в базе, прежде чем удалить его, как это повлияет на производительность если таких проверок много.

если столбец в бд мускул имеет значение только 0 и 1, и например я поставлю тип данных инт и 11 символов влияет ли это на производительность и, если да то какой тип данных будет оптимальнее указать.

Можете еще привести какието свои способы оптимизации, скриптов и бд.



Спустя 2 часа, 6 минут, 58 секунд (13.02.2009 - 16:26) LoneCat написал(а):
Цитата (zerg @ 13.02.2009 - 15:19)
Стоит ли делать проверку к примеру есть ли пользователь в базе, прежде чем удалить его, как это повлияет на производительность если таких проверок много.

Никак не повлияет, если ты не удаляешь пользователей из базы чаще чем 10 штук в секунду.
Цитата (zerg @ 13.02.2009 - 15:19)
если столбец в бд мускул имеет значение только 0 и 1, и например я поставлю тип данных инт и 11 символов влияет ли это на производительность и, если да то какой тип данных будет оптимальнее указать.

Используй TINYINT(1)
Цитата (zerg @ 13.02.2009 - 15:19)
Можете еще привести какието свои способы оптимизации, скриптов и бд.

Слишком абстрактный вопрос.

Спустя 21 минута, 26 секунд (13.02.2009 - 16:47) sergeiss написал(а):
Ежели 0 или 1, то можно и boolean использовать smile.gif

А "другие" способы оптимизации... Есть такие. Это, в частности, и использование внутренних функций БД, и использование индексов для ключевых полей.

Спустя 4 минуты, 21 секунда (13.02.2009 - 16:51) zerg написал(а):
LoneCat, sergeiss, спасибо огромное.

еще вопрос если идут числа с разделительным символом(1,3,4,5,8,3,4)какой тип данных лучше поставить?

и если например столбец в общем случае например занимант от "x" до "y" символов но бывают исключения например с регистрацией имен когда лимит "y" будет превышен например через год когда короткие имена зарегистрируют стоит ли делать длинну столбца в бд динамическим.

Спустя 1 минута, 4 секунды (13.02.2009 - 16:53) LoneCat написал(а):
Цитата (sergeiss @ 13.02.2009 - 17:47)
Ежели 0 или 1, то можно и boolean использовать smile.gif

А "другие" способы оптимизации... Есть такие. Это, в частности, и использование внутренних функций БД, и использование индексов для ключевых полей.

Цитата из мануала по MySQL smile.gif
Цитата
BOOL, BOOLEAN

These types are synonyms for TINYINT(1). The synonym BOOLEAN was added in MySQL 4.1.0. A value of zero is considered false. Non-zero values are considered true:

Спустя 50 секунд (13.02.2009 - 16:53) Adil написал(а):
Если или 0 или 1 не лучше ли enum использовать?

Спустя 4 минуты, 2 секунды (13.02.2009 - 16:57) LoneCat написал(а):
Цитата (zerg @ 13.02.2009 - 17:51)
еще вопрос если идут числа с разделительным символом(1,3,4,5,8,3,4)какой тип данных лучше поставить?

Лучше использовать доп.таблицу.
Цитата (zerg @ 13.02.2009 - 17:51)
и если например столбец в общем случае например занимант от "x" до "y" символов но бывают исключения например с регистрацией имен когда лимит "y" будет превышен например через год когда короткие имена зарегистрируют стоит ли делать длинну столбца в бд динамическим.

Сделай сразу такой максимальный лимит, которого хватит на долго, в крайнем случае размер поля типа CHAR и VARCHAR можно изменить командой ALTER TABLE

Спустя 1 минута, 44 секунды (13.02.2009 - 16:59) LoneCat написал(а):
Цитата (Nezabivaemiy @ 13.02.2009 - 17:53)
Если или 0 или 1 не лучше ли enum использовать?

Можно и ENUM, разница не принципиальна, мне лично удобнее TINYINT.

Спустя 10 минут, 48 секунд (13.02.2009 - 17:10) zerg написал(а):
Цитата (LoneCat )
Лучше использовать доп.таблицу


дополнительная таблица не подойдет, приведу пример пользователь добавляет список друзей, тоесть число может быть от 0 до N, как в таких случаях лучше поступить? как в таких случаях можно поступить, записывать все в одну ячейку через разделитель

Спустя 4 минуты, 59 секунд (13.02.2009 - 17:15) LoneCat написал(а):
Цитата (zerg @ 13.02.2009 - 18:10)
дополнительная таблица не подойдет, приведу пример пользователь добавляет список друзей, тоесть число может быть от 0 до N

Ну так вот, есть одна таблица users, где хранится информация о пользователе, и вторая - user_friends, где два поля user_id и friend_id, в первое записывается идентификатор пользователя, во второе идентификатор евойного друга, затем всех друзей можно выбрать через, например:
SQL
SELECT friend_id FROM user_friends WHERE user_id = 10

Так-же туда можно добавить друга, и также оттуда удалить.

Спустя 3 минуты, 32 секунды (13.02.2009 - 17:18) sergeiss написал(а):
Цитата (zerg @ 13.02.2009 - 17:10)
Цитата (LoneCat )
Лучше использовать доп.таблицу


дополнительная таблица не подойдет, приведу пример пользователь добавляет список друзей, тоесть число может быть от 0 до N, как в таких случаях лучше поступить? как в таких случаях можно поступить, записывать все в одну ячейку через разделитель

Вот как раз в такой ситуации дополнительная таблица и нужна.

PS. Сорри smile.gif Не посмотрел, что LoneCat уже ответил.

Спустя 4 минуты, 45 секунд (13.02.2009 - 17:23) zerg написал(а):
спасибо вам, както не подумал что так можно чтоб повторялось user_id много раз

Спустя 14 часов, 55 минут, 17 секунд (14.02.2009 - 08:19) Sylex написал(а):
Цитата (LoneCat @ 13.02.2009 - 19:59)
Цитата (Nezabivaemiy @ 13.02.2009 - 17:53)
Если или 0 или 1 не лучше ли enum использовать?

Можно и ENUM, разница не принципиальна, мне лично удобнее TINYINT.

а мне удобно почему-то ENUM, наглядней в БД когда смотришь:
Y или N к примеру smile.gif

Спустя 15 часов, 27 минут, 11 секунд (14.02.2009 - 23:46) Alchemist написал(а):
разница между ENUM и TINYINT в том, что первый воспринимает значения как строки, даже если это числа. Так если у вас поле `enum_field` ENUM('0','1'), то такой запрос:
SQL
...`enum_field` = 1 ...
выдаст ошибку.

Плюс в коде удобнее писать
PHP
if ($row['enum_field']) {...
нежели
PHP
if ($row['enum_field'] == 'Y') {...

Спустя 2 дня, 18 часов, 49 минут, 26 секунд (17.02.2009 - 18:35) Гость_zerg написал(а):
а как лучше сделать поиск по базе если несколько сортировок в разных базах, они будут включатся выборочно. Например у меня выводит только по ид, а как можно сделать чтоб выборочно с разных таблиц.
if(isset($_POST['find']))
{

if(isset($_POST['id']))
{
$id = $_POST['id'];
$query = mysql_query("SELECT * FROM `milk` WHERE `id` = $id");
$row = mysql_fetch_array($query);
$query11 = mysql_query("SELECT * FROM `sostav` WHERE `milkid` = $id");

while($rows = mysql_fetch_array($query11))
{
if($rows['vkl']==1){
$sostavid = $rows['id'];
$query12 = mysql_query("SELECT * FROM `cost` WHERE `sostavid` = $sostavid");
//$rowsq = mysql_fetch_array($query12);
while($rowsq = mysql_fetch_array($query12))
{

echo $row['name'];
echo $rows['girnost'];
echo $rowsq['companiya'];
echo $rowsq['cost'];

}
}
}
}[/code]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.