Undr

На память

Записи с меткой ‘sql’

Соответствие MySQL и MongoDB запросов

with 8 comments

1 Star2 Stars3 Stars4 Stars5 Stars (15 голосов, средний: 4.73 из 5)
Loading ... Loading ...

Эта шпоргалка создана для того чтобы упростить переход с SQL баз данных на MongoDB. В ней остались не затронутыми многие особенности и возможности MongoDB, неимеющие аналогов в SQL, такие как MapReduce, например. Или те о которых я незнаю. Это просто список соответствий MySQL запросов и запросов MongoDb.

Читать далее »

Написал undr ()

27 января 2010 в 11:20

Два способа ‘eager loading’ в ActiveRecord

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (1 голосов, средний: 5.00 из 5)
Loading ... Loading ...

Начиная с Rails версии 2.1 в ActiveRecord существует два способа нетерпеливой загрузки (’eager loading’). Первый использует один запрос в котором связывает таблицы оператором JOIN. Второй использует по одному запросу на каждую модель. В Rails версии до 2.1 использовался только первый способ, в версиях начиная с 2.1 используются оба, но второй используется по умолчанию.

Первый способ, обладает некоторыми проблеммами. Он считается медленным, из-за необходимости обрабатывать большое количество избыточных данных (пример 1), особенно при большой вложенности ассоциаций для загрузки, и используется только если в запросе необходимо использовать поля ассоциаций (например в параметре :conditions)

Читать далее »

Написал undr ()

26 декабря 2009 в 19:00

Размещено в Программирование

Метки: , , , ,

Типы соединений таблиц в SQL. Шпаргалка

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (2 голосов, средний: 5.00 из 5)
Loading ... Loading ...

Лучше один раз увидеть, чем 100 раз услышать. Для чего служат различные виды соединений таблиц в SQL-запросах проще всего запомнить на практике. В примере будем использовать две связанные таблицы: контактные лица и компании. Код приведен для MS SQL Server 2000.

Источник: Типы соединений в SQL. Шпаргалка

Читать далее »

Написал undr ()

4 сентября 2009 в 19:05

Размещено в Документация

Метки:

Чем HAVING отличается от WHERE

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (Еще не оценили)
Loading ... Loading ...

При помощи HAVING отражаются все предварительно сгруппированные посредством GROUP BY блоки данных, удовлетворяющие заданным в HAVING условиям. Это дополнительная возможность “профильтровать” выходной набор.

Условия в HAVING отличаются от условий в WHERE:

  • HAVING исключает из результирующего набора данных группы с результатами агрегированных значений;
  • WHERE исключает из расчета агрегатных значений по группировке записи, не удовлетворяющие условию;
  • в условии поиска WHERE нельзя задавать агрегатные функции.

Написал undr ()

4 сентября 2009 в 19:04

Размещено в Документация

Метки:

Чем отличается MyISAM от innoDB

with 3 comments

1 Star2 Stars3 Stars4 Stars5 Stars (4 голосов, средний: 5.00 из 5)
Loading ... Loading ...

Главное отличие: при записи в таблицу в innodb не блокируется вся таблица, а только именно та строка в которую идёт запись. Innodb увеличивает скорость если в таблицу постоянно идёт запись и вывод из неё. Но innodb работает медленнее если из таблицы идёт только постоянно вывод данных.

  • Innodb восстанавливается от сбоя повторно запуская лог транзакций. Myisam должен сканировать и восстанавливать или перестраивать индексы или таблицы. которые были обновлены. но не сброшены на диск. У innodb восстановление занимает всегда одно и тоже время. У myisam это время растет с увеличением объема данных. Innodb более надежны при больших объемах данных.
  • Myisam использует операционную систему для кэширования чтения и записи строк данных, тогда как innodb делает это самостоятельно. Измененные страницы базы данных сразу не передаются операционной системе, поэтому innodb дает прирост в скорости.
  • В отличие от myisam, innodb не поддерживает сжатие таблиц.
  • Innodb должен сбрасывать данные на диск хотя бы один раз за транзакцию.
  • У innodb нет встроенного полнотекстового поиска.

Написал undr ()

4 сентября 2009 в 18:58

Размещено в Программирование

Метки: , , ,

Использование индексов в mySQL

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (4 голосов, средний: 5.00 из 5)
Loading ... Loading ...

Все индексы (PRIMARY, UNIQUE, KEY, INDEX и FULLTEXT) хранятся в B-дереве. В строковых типах автоматически происходит сжатие начальных и конечных пробелов.

Индексы используются для:

  • Быстрого поиска записей по условию WHERE;
  • Для объединения таблиц с посредством JOIN. Необходимо использовать одинаковые типы сравниваемых полей. Если для сравнения необходимо произвести преобразование типов, то индексы использоваться не будут;
  • Для выбора наименьшего количества совпадений. Если есть множественный индекс, то использоваться будет тот индекс, который находит самое маленький число строк.
  • Поиска MAX и MIN значений для ключевых полей ;
  • Для сортировки и группировки таблиц (……ORDER BY и GROUP BY);
  • Для извлечения данных не из таблицы с данными, а из индексного файла. Это возможно только в некоторых случаях, например, когда все извлекаемые поля проиндексированы.

    Читать далее »

Написал undr ()

4 сентября 2009 в 18:38

Размещено в Примеры

Метки: , ,

Хранение динамического набора атрибутов в базе данных

with 4 comments

1 Star2 Stars3 Stars4 Stars5 Stars (3 голосов, средний: 5.00 из 5)
Loading ... Loading ...

Периодически возникает потребность хранить динамические наборы определенных атрибутов для объектов. Например, в электронном магазине нужно хранить карточку товара, где набор атрибутов может быть разный для разных видов товара. Телефоны, например, имеют размер, вес, поддерживаемые стандарты связи, цветной/черно-белый дисплей; Книги – кол-во страниц, автор, издательство, isbn. Существует несколько способов хранить атрибуты, самые популярные: хранить товар и его атрибуты в общей таблице и шаблон EAV.

Читать далее »

Написал undr ()

4 сентября 2009 в 18:32

Размещено в Примеры

Метки: , ,