ФорумПрограммированиеPHP для идиотов → Суррогатный ключ на основе 3-х полей

Суррогатный ключ на основе 3-х полей

  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 24 мая 2011 г. 7:18, спустя 2 минуты 49 секунд

    мы его и делаем.
    в базе нет такой таблицы, есть только objects.
    делать таблицу, а потом её сливать в sphinx, это то, что предлагает dude.
    не хочется много лишнего говна держать в базе.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 24 мая 2011 г. 7:19, спустя 50 секунд

    artoodetoo, ты гений, я не мог сказать, еще мозг не проснулся … тока допиваю еще кружку с 2 пакетами кофе)
    Спустя 38 сек.
    vasa_c, а в сфинкс нахуй сливать? xDDD
    Сапожник без сапог
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 24 мая 2011 г. 7:23, спустя 4 минуты 21 секунду

    vasa_c, а в сфинкс нахуй сливать? xDDD

    для поиска
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 24 мая 2011 г. 7:28, спустя 4 минуты 56 секунд

    mario, блин я вообще не понимаю, ну допусти есть список товаров/обявления (ага, спалился).
    есть парсинг этих цен объяв во времени.

    поиск будет по полям описания имени и тп - это в лысой кошке.

    в любом случае есть у нас ID этого товара. и хочется видимо в дополнение к результатам из лысой кошки получить цену.

    так?
    Сапожник без сапог
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 24 мая 2011 г. 7:31, спустя 2 минуты 49 секунд

    дуд
    у нас есть номер_ид, дата, число(от 1 до 10). Из этого нам нужно получить уникальный первичный ключ, который в дальнейшем мы сможем получить снова.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 24 мая 2011 г. 7:40, спустя 9 минут 33 секунды

    mario, ну блядь тогда все очевидно

    $uniqid = base_convert($objectid.$date(05112011).$rand(0-10), 10, 64);

    получишь коротенький ключ.

    <?
    $id = 1000000;
    $date = 20110511;
    $rand = 5;

    $str = $id.$date.$rand;
    $uniqid = base_convert($str, 10, 35);

    echo $uniqid;
    echo "\n";

    echo base_convert($uniqid, 35, 10);
    echo "\n";

    echo $str; die("\n\n");


    или вам хочется чтобы он както еще упаковался дальше? :D
    Сапожник без сапог
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 24 мая 2011 г. 7:42, спустя 1 минуту 37 секунд

    vasa_c, а в сфинкс нахуй сливать?

    как ни странно для поиска по ним.
    а кроме поиска данные сущности нигде не нужны, так что хранить в базе их не хочется.
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 24 мая 2011 г. 8:09, спустя 27 минут 7 секунд

    т.к. я гений, я подкину еще говна: у вас в условиях есть дата, наверняка будут записи не на точную дату, но на max дату <= заданной, пока значение не перекрыто следующей записью.
    я прав? тогда вам нужен обычный SQL из двух запросов (или запрос с подзапросом). нахуй сфинкс
    ιιlllιlllι унц-унц
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 24 мая 2011 г. 7:45, спустя 23 часа 35 минут 57 секунд

    artoodetoo, нет, у нас ещё фильтры злобные.
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 24 мая 2011 г. 7:49, спустя 4 минуты 33 секунды


    mario, ну блядь тогда все очевидно

    $uniqid = base_convert($objectid.$date(05112011).$rand(0-10), 10, 64);

    получишь коротенький ключ.

    <?
    $id = 1000000;
    $date = 20110511;
    $rand = 5;

    $str = $id.$date.$rand;
    $uniqid = base_convert($str, 10, 35);

    echo $uniqid;
    echo "\n";

    echo base_convert($uniqid, 35, 10);
    echo "\n";

    echo $str; die("\n\n");


    или вам хочется чтобы он както еще упаковался дальше? :D
    нужен целочистленный тип данных…
    Спустя 17 сек.
    нахуй сфинкс

    тогда и ключи не понадобятся.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 24 мая 2011 г. 7:53, спустя 3 минуты 25 секунд

    нужен целочистленный тип данных…

    ну а чем ввиде этого числа не нравится? просто без преобразований, так числом и хранить, будет не инт 32 а инт 64 - в него то влезет точно …
    Сапожник без сапог
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 24 мая 2011 г. 7:58, спустя 5 минут 2 секунды

    в инт64 всё влезет. сам инт64 не влезет в 32-битный сфинкс.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 24 мая 2011 г. 8:09, спустя 11 минут 23 секунды

    vasa_c, а, сфинкса не понимает 64 битные ключи?) не работал с ним так чтобы особо.

    ну если так то это плохо)) ну хотя написав не раз гео движек для поиска по гео базам ip адресов - понимаю, что часто это может неплохо убить скорость.

    а сколько всего данных в колве строк планируется примерно?
    Сапожник без сапог
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 24 мая 2011 г. 8:13, спустя 3 минуты 45 секунд

    vasa_c, а, сфинкса не понимает 64 битные ключи?) не работал с ним так чтобы особо.

    понимает как и все, на 64 битной оси.
    ну если так то это плохо)) ну хотя написав не раз гео движек для поиска по гео базам ip адресов - понимаю, что часто это может неплохо убить скорость.

    а сколько всего данных в колве строк планируется примерно?

    4ккк+
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 24 мая 2011 г. 8:17, спустя 4 минуты 14 секунд

    если не влезет, значит в сфинкс совать 32bit, который будет указывать на полную запись во вспомогательной таблице.
    сам сфинкс чтоли не занимает места? почему так страшно завести таблицу с одним ключем и еще тремя целыми числами?
    ιιlllιlllι унц-унц

Пожалуйста, авторизуйтесь, чтобы написать комментарий!