За последние 24 часа нас посетили 22910 программистов и 1238 роботов. Сейчас ищут 825 программистов ...

сумашедший count

Тема в разделе "PostgreSQL", создана пользователем Slavka, 20 ноя 2013.

  1. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    имеется 2 таблицы
    1. tabl_1 = 213 000 строк и 23 столбца
    2. tabl_2 22 000 строк и 4 поля

    теперь делаю вот так

    SELECT count("tabl_1"."KODIM") FROM "schema"."tabl_1" -- все пркрасно работает отдает результат .
    SELECT count("tabl_1"."KODIM") FROM "schema"."tabl_1", "schema"."tabl_2"; -- уходит и уводит за собой сервер куда в себя .. после пары минут ожидания остановил скрипт не дождавшись ответа О_о

    наверняка у вас возникнет вопрос - а что это я такое делаю.. ответ

    у меня функцию ( для datatables) - тут надо сначало выполнить запрос , потом спросить сколько всего строчек было в запросе а потом узнать сколько всего строчек было в таблице ..

    вся выборка идет из 2 таблиц .. поэтому и в count попали обе..

    а теперь вопрос - что за столь интересный глюк и как от него можно избавиться ? или же мне переписывать функцию для datatables чтобы можно было вводить запросы чуть ли не в ручную ?

    Добавлено спустя 54 минуты 45 секунд:
    маньяк коллега на работе дождался результата - вот такой получился результат
    4199062136 записей
    470,672 сек

    КАК ТАК ???
     
  2. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    SELECT COUNT(*),(SELECT COUNT(*) FROM table2) FROM table1

    З.Ы. только нафига считать, я так и не понял )
     
  3. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    мне вообще не нужна 2 таблица =)
    смотрите
    Код (PHP):
    1. public static  function datatables($schema,$sTable,$sIndexColumn,array $aColumns,$where='' ){
    2. ...
    3.  $sQuery = "SELECT \"$sIndexColumn\"\"".str_replace(" , ", " ", implode("\"\"", $aColumns))."\"
    4.      FROM  \"$schema\".\"$sTable\"
    5.         $sWhere
    6.         $sOrder
    7.         $sLimit;
    8.     ";
    9. ....
    10.     $sQuery = "SELECT count(\"$sIndexColumn\")  FROM \"$schema\".\"$sTable\" $sWhere";
    11.  
    12.  
    13. } 
    вот так я ее вызываю
    main::datatables("DOGOVORA", "IMUSCH\", \"DOGOVORA\".\"VYPIS_KOM1", "IMUSCH\".\"KODIM", array( 'LIT','NOMKOM','NAZKOM', 'RASPOM', 'UR', 'SKOM','SZEM','k','NDOG','KAZNA','ARENDA','VID','USERKOR','DATE_PER','PRIM' )," \"IMUSCH\".\"KODIM\" = \"VYPIS_KOM1\".\"KODIM\" AND \"IMUSCH\".\"ARXNOM\" = '".$_GET['ARXNOM']."'" );

    а ладно .. забейте - завтра сделаю datatables2 куда буду такие "веселые" задачи сплавлять
    в функцию будут передаваться готовые запросы .. для выборки .. для count и для другого count ( который я не показал тут)