Mysql optimal cədvəl yaratmaq

Mysql-də cədəvli daha optimal və sürətli etməyə çalışıram. Bir məsələdə çətinlik çəkirəm. Fərz edək ki xəbər cədvəli yaradıram. Burda bir xəbər eyni anda bu bölmələrdə görünə bilər "slayd, yaxşılar, foto qalereya, video qalereya, seçilmişlər). İndi bu bölmələrin hərəsi üçün cədvəldə ayrı sütun (column) yaratmalıyam? Daha yaxşı həlli yoxdu bu işin? Məsələn belə etmək istəmirəm: 1. select * from xeber where slayd=1 2. select * from xeber where yaxsilar=1 3. select * from xeber where foto=1 Bütün bu malumatı bir sütun daxilində (məsələn: tip) saxlamaq istəyirəm. Belə olan halda bazaya sorğu necə gedəcək bilmirəm. Çünki bir xəbər eyni anda müxtəlif yerdə görünə bilər.

Verilmiş cavablar və yazılan şərhlər (6 cavab var)

Cabbarov Sübhan (2015-03-21 18:22:28)
Elə ola bilməz axı. bir xəbərin tipi necə həm 1 həm də 2 edə bilərəm? Mənə tipi 1 və 2 olan xəbərlər yox. Bir xəbərə necə iki tip verib onu sonra sorğu ilə almaqdır

Messi (2015-03-20 21:30:35)
bele olar [code]select * from xeber where tip = 1 and tip = 2[/code] əgər bölmə çoxdursa where - ni bir deyişenede ata bilersiz.

Cabbarov Sübhan (2015-03-20 18:10:52)
like nəticə etibari ilə bir tərəfdən məsələni həll etsədə sürəti azaldır. mən sütunların sayını elə sürətə görə azaltmaq istəyirəm

Cabbarov Sübhan (2015-03-20 18:09:54)
Mən bu varinatda istəmirəm axı. Bu variantda etsəm bir xəbəri eyni anda müxtəlif tiplərdə sorğu göndərib alamaq omur ki. Məsələn id-si 1 olan xəbər həm salyda həm də yaxşılarda görünməlidi. əgər ... tip=1 göstərsəm bu ancaq slayd olar yox əgər .... tip=2 etsəm onda yaxşılara aid olacaq.

Messi (2015-03-20 15:58:06)
Düşündükcə cox variantlar tapmaq olar ilk ağlıma gələn bu oldu. Bazaya sorğu göndərərkən bölmələri rəqəmlə adlandırırıq məs: 1=slayd; 2=yaxsilar və s. Insert into xeber set tip=intval($tip) sorğunu çekərkən ise select * from xeber where tip > 0 (bütün bölmələr görünsün) select * from xeber where tip = 1 (yalnız slayd bölmesinde olan xəbərlər görünsün) Optimize cəhətdən isə cədvəldə yalnız sizə lazım olan məlumatları çəkin select * from əvəzine select tip,name və s. from sorğuda limit qoyun . əgər size yalniz 1 melumat lazımdırsa Limit 1 Sürəti ən çox lənqidən ise RAND() , like ‘%yaxsilar%’ kimi əmrlərdir.

niko123 (2015-03-20 04:24:46)
bir sütün daxilində hər birini xüsusi simvollarla ayıra bilərsiniz, məsələn http://pastebin.com/sxkYYJgf Sorğunu da ki, like '%yaxsilar%' və.s kimi vermək olar

Mövzu üzrə bənzər suallara da baxa bilərsiniz.

mysql Error

Blob səs faylının mysqldan oxunması

Mysql Sorğuda yardım

Mysql_query və mysql_unbuffered_query arasında fərq nədir?

Windows hosting

Ajax haqqında