WEB a ESHOP - CREATOR
Zobrazují se odpovědi 1 až 9 z 9

Rychleší DB, nápočet údajů fo formuláře

  1. Zdravím, řeším tento probém.
    Mam mySQL DB cca 60000 záznamu.
    A potřebuji si vracet napočtené hodnoty do formuláře. viz. např. nové sauto http://beta.sauto.cz/osobni/hledani kdy při každé úprave ve formu dopočtou počty do každého selectu atd. Rád bych něco podobného. Pokud se to snažím dělat přes cyklus v PHP dostavam se při 5 položkách na čas 0,5 sekundy.

    Nevíte někdo jak to řešit rychleji? Např. když rozšířím form na 50 položek.


    Díky na názory.

  2. Co se právě děje na Webtrhu?
  3. Cele to je o navrhu DB. MySQL by s tim nemelo mit sebemensi problem. Pripadne lepsi by na to byla nejaka NoSQL, napr. Mongo,Couch..

  4. Bez možnosti náhledu do DB, Ti pravděpodobně nikdo konkrétněji neporadí.

    Hodit indexaci na potřebné sloupce, zvolit jiný typ MySQL, lépe stavět dotazy... je toho mraky..

    PS: Proč to dělat v cyklusu, když při dobře stavěné DB, to lze udělat v MySQL?

  5. Nevím, v čem je problém. Tohle snadno zvládá DB i při větším počtu položek. Problém bude asi ve špatné struktuře, indexaci a dotazu pro dopočet.

  6. Otazka je zda je problem v DB, nebo jinde. Idealni by bylo videt Vas kod a strikturu DB i s indexama.

  7. No jde o to, že mi nejde jen o t o spočitat si počet count každe položky. Ale že každá z položek nabívá třeba 10 - 100 vlastností a já potřebuju u každé položky znát daný počet vlastnosti v 80 000 záznamech. Např. karoserie, 1 sloupec v DB, ale má 10 možností no a já potřebuju číslo, kolikrát je každá karoresrie zastoupena v DB, a takových položek, mame více než 20 (karoserie,znacka, poalivo, rok vyroby atd). A nejlépe to dostat na 1 SQL dotaz z DB, tak do 0,2 sekundy.

  8. To tu vsichni, rekl bych, chapeme. Tezko nekdo poradi bez znalosti struktury DB.

  9. Kód:
    CREATE TABLE volnamista (
      id_pozice int(11) NOT NULL auto_increment,
      odkud char(1) character set cp1250 collate cp1250_bin NOT NULL,
      profese_kod double NOT NULL,
      profese_doplnek varchar(100) collate cp1250_czech_cs NOT NULL,
      firma varchar(100) collate cp1250_czech_cs NOT NULL,
      firma_ic double NOT NULL,
      firma_www varchar(100) collate cp1250_czech_cs NOT NULL,
      smennost_kod char(1) character set cp1250 collate cp1250_bin NOT NULL,
      min_vzdelani_kod char(1) character set cp1250 collate cp1250_bin NOT NULL,
      uvazek_kod char(1) character set cp1250 collate cp1250_bin NOT NULL,
      konos_text varchar(100) collate cp1250_czech_cs NOT NULL,
      konos_titul varchar(10) collate cp1250_czech_cs NOT NULL,
      konos_jmeno varchar(50) collate cp1250_czech_cs NOT NULL,
      konos_prijmeni varchar(255) collate cp1250_czech_cs NOT NULL,
      konos_titul_za varchar(10) collate cp1250_czech_cs NOT NULL,
      konos_telefon varchar(255) collate cp1250_czech_cs NOT NULL,
      konos_email varchar(255) collate cp1250_czech_cs NOT NULL,
      konos_text_adr varchar(255) collate cp1250_czech_cs NOT NULL,
      pid bigint(11) NOT NULL,
      ref varchar(15) collate cp1250_czech_cs NOT NULL,
      uid double NOT NULL,
      prac_nazev varchar(255) collate cp1250_czech_cs NOT NULL,
      prac_okres varchar(50) collate cp1250_czech_cs NOT NULL,
      prac_okres_kod double NOT NULL,
      prac_obec varchar(100) collate cp1250_czech_cs NOT NULL,
      prac_cobce varchar(100) collate cp1250_czech_cs NOT NULL,
      prac_ulice varchar(100) collate cp1250_czech_cs NOT NULL,
      prac_cp varchar(10) collate cp1250_czech_cs NOT NULL,
      prac_co varchar(100) collate cp1250_czech_cs NOT NULL,
      prac_psc varchar(6) collate cp1250_czech_cs NOT NULL,
      prac_adr_pro_tisk varchar(255) collate cp1250_czech_cs NOT NULL,
      mzda_min double NOT NULL,
      mzda_max double NOT NULL,
      prac_posta varchar(50) collate cp1250_czech_cs NOT NULL,
      od date NOT NULL,
      `do` date NOT NULL,
      vhod_abs_ss char(1) character set cp1250 collate cp1250_bin NOT NULL,
      vhod_abs_vs char(1) character set cp1250 collate cp1250_bin NOT NULL,
      vhod_mladistvi char(1) character set cp1250 collate cp1250_bin NOT NULL,
      vhod_neabsmld char(1) character set cp1250 collate cp1250_bin NOT NULL,
      vhod_ozp char(1) character set cp1250 collate cp1250_bin NOT NULL,
      vhod_ozp_tzp char(1) character set cp1250 collate cp1250_bin NOT NULL,
      vhod_zdravi char(1) character set cp1250 collate cp1250_bin NOT NULL,
      vhod_cizinci char(1) character set cp1250 collate cp1250_bin NOT NULL,
      vhod_bezbar char(1) character set cp1250 collate cp1250_bin NOT NULL,
      pzciz char(1) character set cp1250 collate cp1250_bin NOT NULL,
      dlouho_neobsazeny char(1) character set cp1250 collate cp1250_bin NOT NULL,
      celkem_vm char(1) character set cp1250 collate cp1250_bin NOT NULL,
      poznamka text collate cp1250_czech_cs NOT NULL,
      vm_www varchar(100) collate cp1250_czech_cs NOT NULL,
      zmena datetime NOT NULL,
      vyradit_dne date NOT NULL,
      jak_kontaktovat char(1) character set cp1250 collate cp1250_bin NOT NULL,
      urad_prace varchar(100) collate cp1250_czech_cs NOT NULL,
      urad_prace_kod double NOT NULL,
      autor char(1) collate cp1250_czech_cs NOT NULL,
      obor varchar(50) collate cp1250_czech_cs NOT NULL,
      dovednost varchar(50) collate cp1250_czech_cs NOT NULL,
      dovednost_popis text collate cp1250_czech_cs NOT NULL,
      povolani varchar(50) collate cp1250_czech_cs NOT NULL,
      povolani_praxe varchar(50) collate cp1250_czech_cs NOT NULL,
      vyhoda varchar(50) collate cp1250_czech_cs NOT NULL,
      vyhoda_popis text collate cp1250_czech_cs NOT NULL,
      jazyk varchar(50) collate cp1250_czech_cs NOT NULL,
      jazyk_uroven varchar(50) collate cp1250_czech_cs NOT NULL,
      jazyk_popis text collate cp1250_czech_cs NOT NULL,
      aktivni char(1) collate cp1250_czech_cs NOT NULL default 'N',
      pravni_vztah char(1) collate cp1250_czech_cs NOT NULL,
      vzdelani varchar(50) collate cp1250_czech_cs NOT NULL,
      vlozeno datetime NOT NULL,
      PRIMARY KEY  (id_pozice),
      UNIQUE KEY uid (uid),
      KEY mzda_min (mzda_min),
      KEY mzda_max (mzda_max),
      KEY prac_okres_kod (prac_okres_kod,aktivni,vlozeno),
      KEY profese_kod (profese_kod,prac_okres_kod,aktivni,vlozeno),
      KEY aktivni (aktivni,vlozeno),
      KEY aktivni_2 (aktivni),
      KEY firma_ic (firma_ic,pravni_vztah,prac_okres_kod,vlozeno)
    ) ENGINE=MyISAM  DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs DELAY_KEY_WRITE=1;
    A já chci at mi ten select vrati ze :
    položka - profese_kod ma zastoupeny hodnoty : A -4x, B -3x
    položka - aktivni má hodnota : A - 250x, N - 400x
    položka - firma_ic má hodnota : 123456 - 4x atd.

    A to potřebuju ziskat na 1 dotaz

  10. takatom Hodnocení: 2 (100%) takatom je na dobré cestě
    9
    Kód:
    select 'profese_kod' as dotaz,profese_kod,count(1)as pocet from volnamista where profese_kod in (A,B) group by profese_kod
    union all
    select 'aktivni' as dotaz,aktivni,count(1)as pocet from volnamista group by aktivni
    union all
    select 'firma_ic' as dotaz, firma_ic,count(1)as pocet from volnamista where firma_ic in ('123456') group by firma_ic

Hostujeme u Server powered by TELE3