Архив

Архив автора

MySQL 5.1 vs 5.4

25 Сентябрь 2009 Нет комментариев

За взялся и GOOGLE, что обнадёживает :)

Читая о новостях в разработке MySQL, наткнулся на несколько интересных статеек. Всем, кто имеет непосредственное отношение к БД, да и тем, кто раздумывает над выбором , рекомендую ознакомиться:

1. http://dev.mysql.com/doc/mysql-5.4-features/en/smp-improvements.html Scalability Improvements

2. http://dev.mysql.com/tech-resources/articles/mysql-54.html A Quick Look at MySQL 5.4; В статье приведены интересные графики сравнения веток 5.1 и 5.4 по производительности. Описаны улучшения, касающиеся подзапросов(кстати те, которых ждали от ветки 6.0, но так и не дождались :) ), JOIN и другого.

В бонус можно почитать о создании plugin для MySQL(аналог расширенных хранимых процедур в MS Server )

http://dev.mysql.com/doc/refman/5.1/en/plugin-api.html

Скачать MySQL 5.4 можно тут: http://dev.mysql.com/downloads/mysql/5.4.html

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes )

Суммирование(конкатенация) строковых полей в MySQL

21 Сентябрь 2009 1 комментарий

Недавно понадобилось объединить в одну строку поле всех записей, возвращаемых запросом. Курсором по результату запроса проходить не хотелось, и я с радостью обнаружил существование такого оператора как

group_(). Его синтаксис:

GROUP_CONCAT([DISTINCT] expr [,expr ...]

[ORDER BY {unsigned_integer | col_name | expr}

[ASC | DESC] [,col_name ...]]

[SEPARATOR str_val])

DISTINCT позволяет отобрать только уникальные записи. ORDER BY     ASC и DESC задают порядок сортировки. С помощью  SEPARATOR str_val можно задать разделитель для записей.

Пример:

> SELECT student_name,

-> GROUP_CONCAT(DISTINCT test_score

-> ORDER BY test_score DESC SEPARATOR ‘ ‘)

-> FROM student

-> GROUP BY student_name;

mysql> SELECT student_name,
    ->     GROUP_CONCAT(DISTINCT test_score
    ->               ORDER BY test_score DESC SEPARATOR ' ')
    ->     FROM student
    ->     GROUP BY student_name;
VN:F [1.9.13_1145]
Rating: 10.0/10 (1 vote )
Categories: Общее Tags: , , ,

ПРоверка синтаксиса SQL online.

5 Сентябрь 2009 Нет комментариев

Случайно нашёл ссылочку http://developer.mimer.se/validator/parser200x/index.tml#parser. Тут можно проверить синтаксис online. Очень простенькая штука с ограниченым кол-вом стандартов. Может быть полезной.

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes )
Categories: T-SQL, Общее Tags:

XML в Delphi

29 Август 2009 Нет комментариев

В прошлый раз написал об XML+C#, а о любимом и забыл вовсе :)

В Delphi работать с ХМЛ документом немного сложнее. Я предпочитаю следующий способ…

С помощью меню Project -> Type Library Import импортируем стандартную библиотеку microsoft msxml.dll(ну или msxml6.dll, зависит от версии), поддерживающую модель . При этом генерируется msxml_tlb.pas — файл описания COM сервера. С подготовкой всё :) . Чтобы использовать в вашей программе, просто пропишите в разделе USES имя файла MSXML_TLB.

В файле MSXML_TLB.pas описаны все интерфейсы, константы и соклассы COM-сервера.

Таким образом, простейший пример будет следующего вида:

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

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes )
Categories: Delphi Tags: , ,

Работаем c XML(англ. eXtensible Markup Language- расширяемый язык разметки) в C#

29 Август 2009 Нет комментариев

Ни для кого не секрет, что очень удобен для хранения сериализованных объектов, прочих данных. Microsoft, например очень плотно использует для сериализации. Очень удобной они сделали и работу с документами в . Документ можно открыть и прочесть из него данные очень просто. В основном я пользуюсь следующими способами:

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

VN:F [1.9.13_1145]
Rating: 9.3/10 (6 votes )
Categories: C# Tags: , , , ,

Пользуемся триггерами(trigger)

28 Август 2009 Нет комментариев

Ранее я писал об использовании Stored Procedures, теперь пришёл черёд триггеров. В отличие от хранимых процедур, триггера я принял сразу. Очень удобная и полезная штука. Если вы хотите отследить вставку, изменение или удаление записи, то триггеры именно для этих задач. Как вы знаете, триггеры можут быть 3 типов(DML): на , и update; то есть триггер сработает на указанное действие с данными в таблице БД delete, insert или update , в зависимости от его типа. Выполняться он может до(before) или после(after) того действия(delete, insert или update) которое его вызвало. Триггеры before полезны, например,  для того, чтобы вы могли предупредить какое либо недопустимое, или несогласованное с логикой бизнесс процесса действие с данными. Он выполняется до вызвавшего его действия, а значит с помощью него можно это действие отменить, проверив данные на валидность с помощью statements вашего тригера. Триггеры after, выполняютя после действия, которое его инициировало и полезны, например для логирования изменений данных.

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

VN:F [1.9.13_1145]
Rating: 9.5/10 (2 votes )

Ускоряем и оптимизуруем Delete из таблиц

26 Август 2009 1 комментарий

В одной из своих записей я уже рассказывал о способах ускорения insert. В этой записи я расскажу о простейших способах оптимизиции и ускорении удаления строк из таблиц. В принципе, способы удаления схожи со способами вставки во многом.

Итак:

1. Вместо построчного удаления делайте массовое(сразу все строки, которые нужно удалить), т.к. при массовом удалении индекс претерпит изменения лишь раз, вместо постоянного передёргивания при построчном удалении. Например:

вместо

from tablename where field1=2

delete from tablename where field1=3

delete from tablename where field1=4,

лучше записать так -

delete from tablename where field1=2 or field1=3 or field1=4

2. Если при удалении вы уверены, что никто не будет делать запрос к таблице, то делайте «LOCK TABLE».

3. Если есть возможность перефразировать запрос на удаление указывая в разделе WHERE условие по полю первичного ключа, то целесообразно будет сделать именно так. Этот запрос будет не только быстрее, но и не будет блокировать таблицу.

VN:F [1.9.13_1145]
Rating: 9.3/10 (3 votes )
Categories: MySQL, SQL Server, T-SQL Tags: , , ,

Cast() и Convert().

24 Август 2009 Нет комментариев

Функции () и () дают возможность преобразовывать выражения одного типа в другой.

Для MSSQL Server синтаксис:

CAST ( expression AS data_type [ (length ) ])

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Для :

CAST(expr AS type)

CAST() функция принимает данные одного типа и возвращает результат другого типа, как и CONVERT().

CONVERT(expr,type), CONVERT(expr USING transcoding_name)

Подробнее MS http://msdn.microsoft.com/ru-ru/library/ms187928.aspx

и MySQL    http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes cast)
Categories: MySQL, SQL Server, T-SQL Tags: , , , ,

Оптимизиция по индексам. Советы. Часть 2.

17 Август 2009 Нет комментариев

Продолжаю тему оптимизации запросов по индексам начатую тут. Кстати синтаксис create можно посмотреть тут для MS http://msdn.microsoft.com/ru-ru/library/ms188783.aspx, и тут для http://dev..com/doc/refman/5.0/en/create-index.html.

Продолжаю советы:

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

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes )

Где взять MS SQL Server 2008

16 Август 2009 Нет комментариев

Если вы решили начать работу или обучение с MS Server, то вы можете бесплатно тут, на официальном сайте http://www.microsoft.com/express/sql/download/. Бесплатно предоставляется версия SQL Server 2008 Express. Для скачивания также доступна  SQL Server 2008 Enterprise 180-day evaluation по адресу http://www.microsoft.com/sqlserver/2008/ru/ru/trial-software.aspx с пакетом обновлений Service Pack 1 для SQL Server 2008

VN:F [1.9.13_1145]
Rating: 7.0/10 (3 votes )