• Как запихнуть все столбцы из JOIN в один столбец?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Не пробовали поискать в яндексе?
    Я ввел запрос "MySQL for json" выражение "for json" поддерживается в SQL Server и это считается золотой стандарт СУБД, поэтому похожие функции в других СУБД можно искать по ключевым словам.
    Вот ответ, по - моему подходит.
    https://stackoverflow.com/questions/41758870/how-t...
    Ответ написан
    Комментировать
  • Какая из баз данных лучше всего подходит для хранения большого словаря?

    @Miron11
    Пишу sql 20 лет. Срок :)
    А Вы не пробовали добавить индекс на поле из 4-х байтов?
    На MySQL индексы работают вполне приемлемо, главное, чтобы это был первый индекс созданный на таблице, тогда InnoDB ( default ) движок по умолчанию создаст кластеризованный индекс.
    Вот синтаксис: https://dev.mysql.com/doc/refman/8.0/en/create-ind...
    обратите внимание на варианты UNIQUE, это поможет подтвердить, что ключ каждого текстового поля действительно уникальный.
    Потом, во время запроса, надо будет аккуратно проверить синтаксис, чтобы подтвердить что запрос создан так, что индекс будет использован - тип данных в WHERE должен соответствовать, и что запрос действительно его использует ( по моему в MySQL это опция EXPLAIN ).
    Если все сделано верно, то скорость выполнения запроса с миллиардом записей должна быть вполне приемлема.
    Осталось проверить некоторые детали. Из вопроса не очень понятно, если база многопользовательская, или обслуживает пользователя работающего на этой же машине, есть ли одновременный доступ нескольких пользователей, иными словами доп информация по масштабу использования базы может помочь. И хотя SQLite намекает на чисто локальный характер записей, это детали которые лучше подтвердить, чем оставить за кадром.
    Кроме того, какой характер ключа из 4 байтов, это число или бинарная конструкция, если бинарная, приемлемо ли его перевести к типу Integer, это существенно для скорости индекса.
    ---
    Если же индекс уже создан, и не показывает результаты, которые Вы ожидаете, детали запрошенные выше помогут разобраться.
    Ответ написан
    Комментировать
  • Как вывести все индексы массива, соответствующие условию?

    @Miron11
    Пишу sql 20 лет. Срок :)
    public class StatsService {
    
        public ArrayList<Integer> monthsOfTopSales(long[] sales) {
    
            long topSale = sales[0];
            Integer month = 0;
            ArrayList<Integer> topMonths = new ArrayList<Integer>();
    
            for (long sale : sales) {
                month ++;
                if (topSale < sale) {
                    topSale = sale;
                    topMonths.clear();
                    topMonths.add(month);
                } else if ( topSale == sale ) {
                    topMonths.add(month);                
                }
            }
            return topMonths;
        }
    
    }
    Ответ написан
    Комментировать
  • Можно ли считать справочником табл. с вн. связью?

    @Miron11
    Пишу sql 20 лет. Срок :)
    В принципе справочник, это сущность. В СУБД каждая линейка, это сущность. То есть паритет по свойствам между объектами - сущностями и записями в СУБД будет
    Сущность/объект - запись в СУБД.
    В противном случае, представьте, у Вас таблица
    "Справочник"
    У Вас есть программа, в программе есть клиент СУБД и пользуясь этим клиентом Вы заносите в СУБД таблицу "Справочник" справочник с полями
    № - от 1 до макс 32 битовое число
    Значение - допустим слово русского языка
    ----
    Проходит 10 минут и разработчику так нравится то, что получилось, что он решает точно так же распорядиться другим справочником, теперь это имена городов с номером.
    ----
    И как Вы теперь эти справочники сможете идентифицировать, которая запись принадлежит которому справочнику? Это уже сделать не получится.
    Возможно пример немного притянут за уши, но мне кажется суть описана хорошо.
    Ответ написан
    Комментировать
  • Как лучше синхронизировать 20 бд?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Архитектура синхронизации данных на самом деле содержится в структурах данных передовых создателей СУБД. Прекрасный пример для подражания - SQL Server.
    У него, начиная с версии 2008 или 2012 есть опция обратной проверки странички файла хранящих данные - сумма кратно усеченных значений из 8 полей. Если функция и значение разнятся, страничка объявляется испорченной, после чего включается механизм подгружающий копию той же странички с машины, где эта страничка "здоровая".
    Как разбить данные в таблице на блоки / странички, какая функция лучше для подсчета и как осуществить коммуникации между базами это наверное параметры, которые Вы можете подсказать. Если Вас заинтересовал этот подход, пожалуйста напишите, чтобы сделать полноценное решение.
    Ответ написан
    Комментировать
  • Где найти художника для программы Live2D?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Примеры очень помогут. У меня есть знакомый, который может заинтересоваться.
    Ответ написан
    Комментировать
  • Как сделать поиск по регулярному выражению SQL?

    @Miron11
    Пишу sql 20 лет. Срок :)
    У Вас есть 2 основных подхода
    1. через 2 выражения пользуясь операторами перечисленными здесь
    https://dev.mysql.com/doc/refman/8.0/en/regexp.html
    Возможно не всеми в любой комбинации, но существенно то, что один оператор должен найти часть последовательности символов, которые должны ответить, например
    SELECT *
    FROM `post`
    WHERE
    -- 1-е выражение
    `description` LIKE 'itemid=34543%'
    -- 2-е выражение
    AND
    `description` NOT RLIKE 'itemid=34543[0-9]+'

    2. через 1 регулярное выражение, очень похожее на то, которое Вы предложили, но видимо с \ ( backslash ) символом проведенным дважды, на той же странице объясняется почему: "Because MySQL uses the C escape syntax in strings (for example, \n to represent the newline character), you must double any \ that you use in your expr and pat arguments."
    Если по той или иной причине выражение артачится, наверное можно воспользоваться выражением на один символ длиннее, для выражения цифр [^0-9]
    Ну и наверное надо воспользоваться плюсом, а не звездочкой справа [^0-9]+, иначе эта часть становится не обязательной, и запрос может выбрать, например, значение 'itemid=34543'
    ---
    Всего хорошего!
    Ответ написан
    Комментировать
  • Как организовать хранение объектов в БД?

    @Miron11
    Пишу sql 20 лет. Срок :)
    А почему не выделить число, начинающееся от 1, увеличивающееся на единицу с каждым шагом. И идентифицировать все события произошедшие от начала отрезка времени и до начала следующего отрезка времени, не включая само начало следующего отрезка, этим идентификатором.

    Таким образом в дне 96 таких отрезков, в году 36500 - 4 * 365 = 36500 - 1460 = 35040 шагов в год ( +96 в високосный ). Получается что с одним глобальным объектом - секвенцией - который постоянно прирастает на единицу с помощью метронома выставленного на 15 минут, можно обслуживать всю базу авторитетным единым источником идентификатора текущего промежутка времени, не тратя время на вычисления внутри отдельно взятой процедуры или запроса.

    По - моему в Постгрес для этого даже есть какие - то очень удобные рычаги, позволяющие задать развертку, глобальную или более узкого обзора, которая обеспечит доступ к такому объекту, как к глобальной переменной, с минимальными затратами ресурсов.
    Ответ написан
    Комментировать
  • Почему долго выполняется sql запрос?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Если Вам нужен очень быстрый ответ, разбиваете имена городов на буквы, создаёте XML индекс, и выбираете имена городов во временную таблицу после чего заканчиваете запрос по ключу города. В Постгрес столько расширений что я почти уверен, вы найдете все ответы за несколько запросов в Яндексе.
    Ответ написан
    Комментировать
  • Каждую секунду запрос от миллиона пользователей. Как лучше?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Вот базы данных резиденты в памяти.

    https://en.wikipedia.org/wiki/List_of_in-memory_da...

    В принципе резидент может справиться с таким количеством и частотой запросов. Всё зависит от деталей. Если добавите информацию, что требуется сделать, ответ можно значительно улучшить.
    Ответ написан
    Комментировать
  • Дерево категорий Laravel. Как уменьшить количество запросов в БД?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Для MySQL было бы хорошо подтвердить что таблица категорий создана с поддержкой InnoDB. Если так, то проверьте если есть, и если нет, то добавьте индекс
    CREATE INDEX IX_product_categories_NC1 ON product_categories ( parent_id, name, id );
    Ответ написан
  • Есть ли новые книги или другие ресурсы по COM?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Может уточните, какой аспект COM вас интересует.
    Самые свежие напечатанные материалы которые есть на полке 2000-го года. И они разбиты по общей теории, сервер технологии, транзакционный сервер, ATL и MSMQ.
    В последний раз сам работал с компонентом был недавно ( немного удивился ). Обошелся тем что нашел сам компонент ( в Win SDK ), сгенерировал для него RCW интерфейс в Вижуал Студио
    https://msdn.microsoft.com/en-us/library/8bwh56xe(..., нашел описание .NET interface, и дальше писал в С-sharp.
    Ответ написан
    Комментировать