Выборка как по индексу | |
---|---|
sphinx Автор Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Сразу скажу, что проблема такая есть и сейчас, как-то хорошо/правильно я ее думаю, что не решил.
Натолкнула фраза тов.Симпле из соседней ветки: Цитата: Дело даже не в связанности таблиц, еще раз... Есть индекс по нескольким полям, 3-4 поля ключевые (ой, не я структуру разрабатывал, ее при всем желании сейчас изменить - это НЕРЕАЛЬНО по орг.причинам, от моего желания тут не зависит от слова совсем). Селектом как забрать первую попавшуюся запись? Я как рассуждал - если первая попавшаяся - значит в селекте можно сделать агрегацию по ОДНОМУ полю (ну, по нескольким - это маразм, выборка будет из нескольких записей каки-то агрегированных значений, например МИН(). По ОДНОМУ полю понятно - или индекс настроен на уникальное значение, которое является минимальным - тогда его и берем (по MIN() ). Если это не так, и в уникальный индекс летит случайное поле - тогда нам и агрегация по этому полю вполне сгодится. А по нескольким - опа, выберутся РАЗНЫЕ значения из разных записей. Буду рад услышать коллег. ------------------ "Veni, vidi, vici!"(с) |
Re: Выборка как по индексу | |
---|---|
leonid Сообщений: 3202 Откуда: Рига Дата регистрации: 03.02.2006 |
|
Re: Выборка как по индексу | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
1) Думаешь сильно понятно описание проблемы Хоть бы пример тестовый набросал - исходный курсор и что надо найти... Что за "первая попавшаяся" - т.е. поиск не по всем компонентам первичного ключа (если по всем, то запись находится "уникально" - т.к. она одна на каждую комбинацию)? Или вообще не по полям в него входящим?
2) То что настолько заточено на FPD стиль лучше не трогать (как минимум без полноценного рефакторинга, в т.ч. изменения структуры БД) - пусть в FPD стиле и остаётся. Был там какой LOCATE/SEEK и прямой доступ к "найденной" записи - так пусть и остаётся. Кстати, простой LOCATE будет гораздо эффективнее запроса a-la leonid (его запрос как раз по "неуникальной" комбинации полей и работает - но я так понял что у тебя есть таки PK, т.е. уникальная комбинация - ну грубо говоря добавление в PK поля f1 к этому приведёт для указанных данных). Это не говоря уж о его практической "нечитаемости" ------------------ WBR, Igor |
© 2000-2024 Fox Club  |