Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
londinium
- Сообщения: 27
- Зарегистрирован: 17 апр 2006, 14:04
Сообщение
londinium » 20 дек 2006, 19:21
Здравствуйте, Господа!
Есть такой вопрос. Имеется набор таблиц
Код: Выделить всё
CREATE TABLE REFEQUIPMENTTYPE (
ID INTEGER NOT NULL,
DESCRIPTION VARCHAR(150)
); //тип оборудования
Код: Выделить всё
CREATE TABLE REFROOMS (
ID INTEGER NOT NULL,
NUMBER VARCHAR(15)
);//комнаты, где стоит оборудование
Код: Выделить всё
CREATE TABLE EQUIPMENT (
ID INTEGER NOT NULL,
ACCOUNTNUMBER INTEGER NOT NULL,//номер счета
INVENTARNUMBER INTEGER DEFAULT 0 NOT NULL,
TYPEEQ INTEGER NOT NULL,
DESCRIPTION VARCHAR(100) NOT NULL,
WORKER INTEGER NOT NULL,
PLACE INTEGER NOT NULL,
STATUS INTEGER NOT NULL
);//таблица "Оборудование"
индексы
Код: Выделить всё
create index AccountIndex on equipment(AccountNumber);
create index InventarNumberIndex on equipment(InventarNumber);
Чтобы получить на клиенте красивую табличку по номеру счета пишу так:
Код: Выделить всё
select equipment.inventarnumber,equipment.description,refequipmenttype.description,refrooms.number
from equipment,refequipmenttype, refrooms
where equipment.accountnumber=104
and equipment.place =refrooms.id
and equipment.typeeq =refequipmenttype.id;
Вопрос: можно ли запрос переписать красивее и быстрее. Сейчас его выполнение занимает по данным IBExpert'a 10 мс. И если можно, то как? Для разработки использую FireBird SS 1.5.3. Эксплуатироваться база будет на FireBird Embedded
С уважением, Londinium
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 20 дек 2006, 19:29
Сейчас его выполнение занимает по данным IBExpert'a 10 мс. И если можно, то как?
это шутка? чем не устраивает 10 миллисекунд? Хочется 10 наносекунд?
-
londinium
- Сообщения: 27
- Зарегистрирован: 17 апр 2006, 14:04
Сообщение
londinium » 20 дек 2006, 20:46
это шутка? чем не устраивает 10 миллисекунд?
В принципе устраивает всем, только пока в таблице всего около 30-ти записей и мне непонятно, будет ли такой запрос также шустро отрабатывать, когда записей будет около тысячи.
Разве что научиться пользоваться алиасами и явными джойнами
Эти джойны для меня пока самая недоступная часть SQL, хотя в Грабере соответствующий раздел прочитал раз 5.
Если не сложно, покажите, пожалуйста, как мой запрос переписывается с джойнами.
А пока пойду читать ссылку
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 20 дек 2006, 21:25
В принципе устраивает всем, только пока в таблице всего около 30-ти записей и мне непонятно, будет ли такой запрос также шустро отрабатывать, когда записей будет около тысячи.
ну так налей записей, пересобери статистику по индексам, и посмотри. В чем проблема?
Эти джойны для меня пока самая недоступная часть SQL, хотя в Грабере соответствующий раздел прочитал раз 5.
у Грабера есть только описание джойнов, но не как с ними работать.
А вот как раз для этого я и написал упомянутую статью. Так что лучше сначала прочитать ее.
-
londinium
- Сообщения: 27
- Зарегистрирован: 17 апр 2006, 14:04
Сообщение
londinium » 20 дек 2006, 21:39
у Грабера есть только описание джойнов, но не как с ними работать.
А вот как раз для этого я и написал упомянутую статью. Так что лучше сначала прочитать ее.
Уже читаю. Первое впечатление - толковая статья.