Опубликован: 21 января 2010, 08:26, Автор: MaXyC
Недавно пришлось выполнить махинацию с БД которая, как кажется на первый взгляд, совершенно невыполнима средствами MySQL. Перед глазами у меня была таблица товаров, сортировка которых осуществляется вспомогательным столбцом `order_num` ('порядковый номер'): она позволяет задавать ручную сортировку товаров.
Но вот потребовалось автоматически заполнить этот столбец так, чтобы товары оказались отсортированы по названию: то есть, с рядом ограничений, изменить столбец `order_num` во всей таблице. Очень хотелось обойтись средствами MySQL без привлечения каких-либо дополнительных инструментов, и задача была решена :)


  • Blogger Post
  • Delicious
  • Digg
  • Google Gmail
  • Google Bookmarks
  • Google Reader
  • LiveJournal
  • MySpace
  • StumbleUpon
  • Technorati Favorites
  • Twitter
  • Yahoo Bookmarks
  • Yahoo Mail
  • Yahoo Messenger
  • WordPress
Опубликован: 13 января 2010, 10:25, Автор: MaXyC
Как мы выбираем, по каким колонкам в MySQL строить индексы? Иногда не все так очевидно, как кажется. Эффективность того или иного индекса зачастую зависит от распределения данных в таблице. Правильный, на первый взгляд, индекс может работать крайне не эффективно в зависимости от специфики и частоты данных.

Как это можно выяснить? Простой и очень интересный пример взят с блога mysqlPerformanceBlog. Этот способ анализа индексов применим не только к MySQL, а и к другим СУБД.


  • Blogger Post
  • Delicious
  • Digg
  • Google Gmail
  • Google Bookmarks
  • Google Reader
  • LiveJournal
  • MySpace
  • StumbleUpon
  • Technorati Favorites
  • Twitter
  • Yahoo Bookmarks
  • Yahoo Mail
  • Yahoo Messenger
  • WordPress
Опубликован: 13 января 2010, 10:00, Автор: MaXyC
Что приходит Вам на ум, когда Вы видите такой код?
SELECT * FROM articles ORDER BY id LIMIT 20000, 20

Да, это реализация постраничного вывода на уровне SQL. А еще это выбор результатов для отображения 1000-й страницы.

И Вы сталкиваетесь с тем, что этот запрос работает очень быстро для выборки первых страниц, и невероятно медленно для последних. Почему и как это исправить? Рассмотрим пример для MySQL, хотя описанные принципы применимы для любой СУБД.


  • Blogger Post
  • Delicious
  • Digg
  • Google Gmail
  • Google Bookmarks
  • Google Reader
  • LiveJournal
  • MySpace
  • StumbleUpon
  • Technorati Favorites
  • Twitter
  • Yahoo Bookmarks
  • Yahoo Mail
  • Yahoo Messenger
  • WordPress
Опубликован: 12 января 2010, 12:59, Автор: MaXyC
Конфигурационные параметры по умолчанию в Mysql расчитаны на небольшие базы данных, работающие под малыми наргузками на весьма скромном железе. Если Ваши планы насчет Mysql выходят за границы таблиц на несколько сотен записей, Вам обязательно придется менять настройки по умолчанию.

  • Blogger Post
  • Delicious
  • Digg
  • Google Gmail
  • Google Bookmarks
  • Google Reader
  • LiveJournal
  • MySpace
  • StumbleUpon
  • Technorati Favorites
  • Twitter
  • Yahoo Bookmarks
  • Yahoo Mail
  • Yahoo Messenger
  • WordPress
Опубликован: 16 декабря 2009, 10:53, Автор: MaXyC
Заканчивая очередной проект, столкнулся с одной непонятной проблемой во время обновления таблицы в БД MySQL. Надо было мне вычесть из одного поля БД другое, и результат записать в третье поле, чтобы потом производить по нему сортировку. Но позже выяснилось, что не так то все и просто.


  • Blogger Post
  • Delicious
  • Digg
  • Google Gmail
  • Google Bookmarks
  • Google Reader
  • LiveJournal
  • MySpace
  • StumbleUpon
  • Technorati Favorites
  • Twitter
  • Yahoo Bookmarks
  • Yahoo Mail
  • Yahoo Messenger
  • WordPress
Опубликован: 30 ноября 2009, 12:41, Автор: MaXyC
В данном примере мы рассмотрим создание отсортированного дерева с использованием функций.
Создаем таблицу goods с полями:
  • id (код)

  • id_group (код верхней группы)

  • name (наименование)

Код для создания таблицы:


  • Blogger Post
  • Delicious
  • Digg
  • Google Gmail
  • Google Bookmarks
  • Google Reader
  • LiveJournal
  • MySpace
  • StumbleUpon
  • Technorati Favorites
  • Twitter
  • Yahoo Bookmarks
  • Yahoo Mail
  • Yahoo Messenger
  • WordPress