Стоит ли делать проверку к примеру есть ли пользователь в базе, прежде чем удалить его, как это повлияет на производительность если таких проверок много.
если столбец в бд мускул имеет значение только 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 использовать 
А "другие" способы оптимизации... Есть такие. Это, в частности, и использование внутренних функций БД, и использование индексов для ключевых полей.

А "другие" способы оптимизации... Есть такие. Это, в частности, и использование внутренних функций БД, и использование индексов для ключевых полей.
Спустя 4 минуты, 21 секунда (13.02.2009 - 16:51) zerg написал(а):
LoneCat, sergeiss, спасибо огромное.
еще вопрос если идут числа с разделительным символом(1,3,4,5,8,3,4)какой тип данных лучше поставить?
и если например столбец в общем случае например занимант от "x" до "y" символов но бывают исключения например с регистрацией имен когда лимит "y" будет превышен например через год когда короткие имена зарегистрируют стоит ли делать длинну столбца в бд динамическим.
еще вопрос если идут числа с разделительным символом(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 использовать ![]() А "другие" способы оптимизации... Есть такие. Это, в частности, и использование внутренних функций БД, и использование индексов для ключевых полей. |
Цитата из мануала по MySQL

Цитата |
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) | ||
дополнительная таблица не подойдет, приведу пример пользователь добавляет список друзей, тоесть число может быть от 0 до N, как в таких случаях лучше поступить? как в таких случаях можно поступить, записывать все в одну ячейку через разделитель |
Вот как раз в такой ситуации дополнительная таблица и нужна.
PS. Сорри

Спустя 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) | ||
Можно и ENUM, разница не принципиальна, мне лично удобнее TINYINT. |
а мне удобно почему-то ENUM, наглядней в БД когда смотришь:
Y или N к примеру

Спустя 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]
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]