|
MySQL.RU - Webboard
Вернуться
Инкрементное поле или хранить в поле? (Андрей) 21/04/2009 - 13:36:26
Re: Инкрементное поле или хранить в поле? (walrus) 21/04/2009 - 15:16:56
Re: Проблема с BLOB-полем (Pest) 23/04/2009 - 16:14:44
> Original message text:
> From: Андрей - 21/04/2009 - 13:36:26
> Subject:Инкрементное поле или хранить в поле?
> -----------------
> Если у вас есть две связанные таблицы - one-many. И при выборе вам нужно знать количество связанных записей. Как вы делаете?
> Вариант 1)
> select blog.*,(select count(*) from post where post.blog_id = blog.id) as post_count from blog
> Таким образом мы получаем все блоги + количество записей в каждом из них.Такой вариант плох тем, что если блогов будет много, он будет тормозить.
> Вариант 2)
> Добавляем blog.post_count default 0;
> При добавлении поста, удалении соответственно меняем поле на +1,-1. Лучше тем что быстрее, но сразу и минус - нужно вручную изменять новое поле.
> Вот меня и интересует, кто что использует? Возможно есть разработчики highload систем, мне интересно ваше мнение.
>
From: Pest - 23/04/2009 - 16:14:44
Subject:Проблема с BLOB-полем
-----------------
Проблема с BLOB-полем
среда - [CodeGear™ Delphi® 2007 for Win32®]
сервер БД - [MySQL 5.0]
компонент -[ZeosBD]
fs:=TFileStream.Create(fn,fmOpenRead);
// читаем некие параметры из fs...
msNeuro := TMemoryStream.Create;
msNeuro.Position := 0;
col := NeuroSz * sizeof(smallint); // NeuroSz - ожидаемое число записей размером в SmallInt
msNeuro.CopyFrom(fs, col); // fs-TFileStream, Position стоит на верном месте.
msNeuro.SaveToFile(ExtractFilePath(Application.ExeName) + '.tmp_write'); // проверка считанного!
// msNeuro - действительно содержит 300 * 2 байт, совпадающие с считанным содержимым fs
// а теперь BLOB запишем
DataSet.SQL.Clear;
DataSet.SQL.Add('select * from `events` where Id_event=(select MAX(Id_event) from `events`)');
DataSet.Open;
// ссылаемся на последнюю запись в таблице `events`
if not (DataSet.State in [dsInsert, dsEdit]) then DataSet.Edit;
try
TBlobField(DataSet.FieldByName('NeuroBlob')).LoadFromStream(msNeuro); // Собственно загузка msNeuro в BLOB -поле
finally
msNeuro.Free;
end;
Dataset.Post;
BLOB заполняется!
НО если записывали 600 байт, то при чтении BLOB я вижу 768 байт!
читаю и через чтение BLOB msNeuro и через вьювер (mySQL-Front)
При чем первые 4 байта совпадают с оригиналом, а остальное отличчается... иногда есть совпадения... но не чаще 50%
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
35462
|
|