Дали натоварват многото полета в полето users

joorkataa

Registered
Да ви попитам ако имам 100 полета в таблицата users дали това ще се отрази по някакъв начин на сайта или не ?

И ако го направя на няколко таблици по малко ли ще се натоварва или ще е същото ?
 
Зависи от сървъра ти... Аз примерно извеждам 1000 потребителя на една страница със заявка сравняваща от няколко таблици. Ако е от една таблица не би трябвало да има проблем.. При мен има около 6 условия за селектването от няколкото таблици.
 
Ами ще го хоствам на суперхостинг на СуперПРО сигурно ще е плана, въпроса ми е дали ще се бави много сайта от толкова много полета и проблема е че на една страница имам 50 заявки :/ , това проблем ли е, и дали ще се натоварва много сайта от тази страница ?
 
Еми не знам какво толкова извеждаш с тези 50 заявки....... Уточни какво имаш, за да можем тук от форума да ти помогнем примерно да ограничиш това, а в същия момент да си оползотворен със същите резултати.
 
Оптимизирай си заявките и си направи по-добър дизайн на ДБ. Толкова много полета няма дори във форумите, а те са бъкани с функции.
 
joorkataa каза:
Да ви попитам ако имам 100 полета в таблицата users дали това ще се отрази по някакъв начин на сайта или не ?

И ако го направя на няколко таблици по малко ли ще се натоварва или ще е същото ?
Ако не правиш SELECT * FROM users; мисля, че няма да е проблем.
Но 100 полета в една таблица !?!?! Това е адски много. Чак съм любопитен да разбера какви са.
 
Преди да проектирате база прочетете съдържанието на линковете по-долу и се придържайте към информацията и изискванията изложени там.

http://www.tuj.asenevtsi.com/DB2007/BD35.htm

http://www.cphpvb.net/db/1876-%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%BD%D0%B0-%D0%B1%D0%B0%D0%B7%D0%B8-%D0%B4%D0%B0%D0%BD%D0%BD%D0%B8/
 
Добре а може ли някак да се направи с масив 10 полета например

Код:
house1,house2,house3,house4,house5,house6,house7,house8,house9,house10

и всичко да е в едно поле например houseall в горните полета се записва по една цифра първо си е 0 после като постройш сградата става 1 и не може ли да направя така в това поле houseall да е по следния начин

0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0

Ако може да ми обесните малко повече за масивите как да направя като построя дадена сградата цифрата 1 да си отива на правилното място вместо 0 да става 1


Ето това ми е Update като построя сградата

$q = mysql_query("UPDATE users SET money=money-1000 ,house3=1 WHERE name='$name'") or die(mysql_error());

как ще мога да го направя с масив например в полето houseall да се записва на 3-тата нула ?
 
MySQL за разлика от истинските бази данни не поддържа тип на полета ARRAY.
Имаш вариаант, в който можеш масива да го сериалайзнеш и след това да го набуташ в базата в едно поле. Обратно като след като го извадиш трябва да го ънсериалайзнеш за да прочетеш масива. Това по принцип се ползва но не можеш да правиш WHERE клаузи по такива полета защото не можеш директно от MySQL да се обърнеш към полетата във въпросния масив.
От друга страна можеш да решиш проблеба с допълнителна таблица с релация към тази.
Имаш и трети вариант, в който ако данните които искаш да държиш във въпросното поле са числа да ги набуташ вътре сепарирани с , или | както ти си писал по-горе, тогава няма нужда да сериализираш масив просто ще се налага да правиш explode и implode и отново няма да можеш да правиш WHERE по данните от това поле.
Дай конкретен пример да да ти кажа най-добрия еариянт реализиран с MySQL.
 
$houses=array(0,0,1,0,0,0,0,0,0,0);
$q = mysql_query("UPDATE users SET money=money-1000 ,houses=".serialize($house)." WHERE name='$name'") or die(mysql_error());
това ти е един вариант но все пак трябва да се знае как ще вадиш данните и дали този вариант ще ти свърши работа.
 
Добре аз го вадя ето така за полетата house1 и house2

<?php
$query = "SELECT * FROM users WHERE id='$id'";
$result = mysql_query($query);
$row=mysql_fetch_array($result);
$vote = "index.php?a=vote&id";
$path = $url.$vote;
$points=$row[points];
$usersid=$row[id];
$users=$row[name];
if ( $my['house1'] == '1' ){echo "<div class='hause1'>";}
if ( $my['house2'] == '1' ){echo "<div class='hause2'>";}
?>

А как ще стане с масива ?
 
Ако преди това си инсертнал в полето houses следното нещо
serialize(array(1,0,1,0,0,1,1));
което ще значи
house1=1
house2=0
house3=1
и така нататък .....


то кода ти ще стане:

Код:
<?php
$query = "SELECT * FROM users WHERE id='$id'";
$result = mysql_query($query);
$row=mysql_fetch_array($result);
$vote = "index.php?a=vote&id";
$path = $url.$vote;
$points=$row['points'];
$usersid=$row['id'];
$users=$row['name'];
foreach (unserialize($row['houses']) as $house_num => $value) {
        echo ($value==1 ? "<div class='hause".($house_num+1)."'>" : '');
}
?>
 
пфф това много сложно ми се вижда...
поне сигурно ли е че няма да се натоварва толкова много сайта ?
 
ако от 100 колоните в users станат 95 ... все тая дали ще го направиш така.
SELECT * е гадно на такава таблица
Просто попита как да държиш масив в поле във базата и ти отговорих какви са вариантите.
Аз лично такова нещо правя в краен случай. Предпочитам си релация и друга таблица с данни.
 
ggenov каза:
$houses=array(0,0,1,0,0,0,0,0,0,0);
$q = mysql_query("UPDATE users SET money=money-1000 ,houses=".serialize($house)." WHERE name='$name'") or die(mysql_error());
това ти е един вариант но все пак трябва да се знае как ще вадиш данните и дали този вариант ще ти свърши работа.

Има грешка в заявката и няма да работи.
 
Е па предполагам.че има аз не тествам кода който пиша защото не си струва да симулирам целия казус. А ако не можеш да откриеш, че липсват две точки знчи нема нужда се захващаш. :)
 
ggenov каза:
Е па предполагам.че има аз не тествам кода който пиша защото не си струва да симулирам целия казус. А ако не можеш да откриеш, че липсват две точки знчи нема нужда се захващаш. :)

Всъщност говорех за синтактичната грешка заради, която mysql-a ще върне грешка. И понеже си сложил 'or die' ще спре изпълнението на скрипта, което (по принцип) може да доведе до омазване на данни. Това, че where клаузата няма да намери нищо за ъпдейтване е по-малкото зло. ;)

joorkataa каза:
Да ви попитам ако имам 100 полета в таблицата users дали това ще се отрази по някакъв начин на сайта или не ?

И ако го направя на няколко таблици по малко ли ще се натоварва или ще е същото ?

Въпросът ти е толкова общ, че ако трябва да ти се отговири след това поста може да се ползва за да се издаде цяла книга ;)

Конкретно на връпроса - ще се отрази, но в скороста няма да го усетиш.

Иначе би било хубаво да дадеш повече информация - за какво ще се ползват - какви данни ще има, колко често ще ги четеш, колко често ще се променят, всички колонки ли ще трябват за всеки юзер и тн...

прочети за връзки едно към много в sql
 
Как точно синтактична грешка ще доведе до омазване на данните ? :)
 
Та с 2 думи, няма да ти се отрази това, че имаш 100 полета а на всички които толкова се чудят що за таблица е това... ми за 1 сериозен проект можеш да стигнеш до стотици полета в 1 табле, като нещо повече по добре е да са ти там на 1 място от колкото да правиш релации на 2 таблици по 50 полета.
Това което наистина се отразява ще са ти заявките ако наистина имаш по 50 на рефреш си е... ми нищо особенно не са 50 (аз лично съм стигал до 6400). Но наистина е добре да ги оптимизирваш максимално :}
 

Back
Горе