Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
База ASA8 Не могу сообразить как лучше сделать такую штуку: Есть таблица в которой к каждому товару хранятся значения различных свойств: столбцы good_id, property_id, propertyvalue. и например есть какие то значения- good_id | property_id| propertyvalue a13 | 0006 | red a13 | 0007 | 10x10 a14 | 0006 | white ............. Как мне отобрать товар, который удовлетворяет сразу двум свойствам? например мне нужно выбрать товар у которого св-во 0006 будет равняться red а свойство 0007 будеть равняться 10х10? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 11:26 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 11:38 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Alexey713База ASA8 Не могу сообразить как лучше сделать такую штуку: Есть таблица в которой к каждому товару хранятся значения различных свойств: столбцы good_id, property_id, propertyvalue. и например есть какие то значения- good_id | property_id| propertyvalue a13 | 0006 | red a13 | 0007 | 10x10 a14 | 0006 | white ............. Как мне отобрать товар, который удовлетворяет сразу двум свойствам? например мне нужно выбрать товар у которого св-во 0006 будет равняться red а свойство 0007 будеть равняться 10х10? ПУсть есть таблица T вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 11:45 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Как раз из разряда, почему в РСУБД плохо хранить свойства-значения в записях: Код: plaintext 1. 2. 3. 4. 5. 6. В тоже время: Код: plaintext 1. 2. 3. P.S. Случае не интернет-магазин пишите ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 11:47 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Спасибо всем!! Нет не интернет магазин, но похоже... БД не моя -я к ней только цепляюсь поэтому саму БД менять не могу, а такая структура видимо из-за того, что в каталоге товаров слишком много разношерстного товара, плюс к тому база унифицирована.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 11:51 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Вы наверно базу системы БизнесПро щупаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 14:28 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Ну да, ее конечно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 16:03 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Просто очень знакомая структура сразу в глаза бросилась. А я ее эксплуатирую по полной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 16:45 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Э-э-э-э, вы щас научите мол чела! Вот так: SELECT g.Good_id FROM Goods g KEY JOIN Goods_Properties gp1 KEY JOIN Goods_Properties gp2 WHERE gp1.Property_id = '0006' AND gp1.PropertyValue = 'red' AND gp2.Property_id = '0007' AND gp2.PropertyValue = '10x10';Будет тормозить.А вот так:SELECT gp1.goods_id as g FROM Goods_Properties gp1,Goods_Properties gp2WHERE gp1.Property_id = '0006' AND gp1.PropertyValue = 'red' AND gp1.good_id=gp2.good_id AND gp2.Property_id = '0007' AND gp2.PropertyValue = '10x10'group by g;Не будет. Поверьте мне при такой структуре самый производительный вариант.Почему так утверждаю? Потому что у самого реализована на АСА система полнотекстового поиска.И там использована аналогичная структура хранения данных, ведь в каждом тексте имеется заранее неопределенное кол-во слов(словоформ), как и здесь разное кол-во атрибутов у товаров. Перепробовал множество вариантов, в том числе и с использованием INTERSECTа, EXISTа, DISTINCTа, вложенных запросов.И только в приведенном выше варианте будет нормально работать оптимизатор, и будут использованы индексы (подразумевается что goods_id и property_id есть ПК).В моем случае все усугублялось еще и тем, что использовался динамический SQL, и кол-во экзепляров таблицы свойств товара было переменным(gp1, gp2, ... gpN). И даже с динамическим SQL все нормально функциклирует. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 23:36 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
iLLer: А Вы кстати в курсе, что Ваш вариант = Мой вариант + Зачем то Group by ? То есть если group by убрать, то у нас будут одинаковые планы запроса, если не убрать, то Ваш запрос будет просто медленнее работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2006, 00:48 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Заявления iLLer про производительность его варианта , думаю, надуманы. Самый правильный и производительный вариант запроса -- это SELECT одной записи с двумя EXISTS в WHERE. Производительный - потому что он реально отражает суть требуемого запроса и не делает ничего лишнего. При наличии в таблице свойств не более одной записи для каждого товара производительность его будет никак не хуже запроса с двумя JOIN-ами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2006, 11:02 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
MasterZiv: в ASA 9 запрос с 2 EXISTS в WHERE будет равнозначен моему запросу с 2-мя JOIN-ами. P.S. Я вообще не понимаю, почему все гадают на кофейной гуще, делая однозначные утверждения насчет того, какой запрос будет производительней. Для каждой СУБД, каждой версии (и даже подверсии) будут свои правила. Я лично единственное, что могу утверждать для ASA 9.0.2 и выше (в т.ч. SA10) - различные варианты записи одних и тех же запросов на уровне оптимизатора будут иметь одинаковый план запроса - на моей памяти это утверждение верно всегда, кроме случая использования подзапроса в SELECT (т.е. SELECT (SELECT ...) FROM ...), который будет всегда выводится оптимизатором в плане запросов как Subquery по отношению к главному запросу. Так что я к примеру уже давно с таким оптимизатором бросил привычку изголятся куда поставить соединения - в JOIN, IN, EXISTS, DT, LATERAL - толку то, если оптимизатор все равно переделывает в запросе соединения и условия по наиболее оптимальному варианту - нам остается только выбирать форму записи руководствуясь читабельностью запроса и более краткой формой записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2006, 15:15 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
ASCRUS пишет: > Так что я к примеру уже давно с таким > оптимизатором бросил привычку изголятся куда поставить соединения - в > JOIN, IN, EXISTS, DT, LATERAL - толку то, если оптимизатор все равно > переделывает в запросе соединения и условия по наиболее оптимальному > варианту - нам остается только выбирать форму записи руководствуясь > читабельностью запроса и более краткой формой записи. Аналогично. Добавлю только, что иногда перед тем, как спорить на тему сравнения запросов для ASA, стоит вспомнить про функцию REWRITE -- www.rusug.ru Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2006, 15:58 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
ASCRUSMasterZiv: в ASA 9 запрос с 2 EXISTS в WHERE будет равнозначен моему запросу с 2-мя JOIN-ами. Вообще я пожалуй протопмозил , если там не более одной записи на property будет, то и с JOIN-ами нормально. ASCRUS Я вообще не понимаю, почему все гадают на кофейной гуще, делая однозначные утверждения насчет того, какой запрос будет производительней. Ну уж с GROUP BY никогда запрос не может быть быстрее, чем без него. Потому что подразумевает дополнительную операцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2006, 00:20 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
При всем уважении к вам ребята, не могу не ответить. MasterZiv: Я говорю про АСА, поэтому спорить с Вами даже и не собираюсь. В прошлый раз Вам доказал, что на счет АСА Вы ошиблись, в этот раз тоже самое будет. ASCRUS: В который раз убеждаюсь, что Вы относитесь с предвзятым отношением к высказываниям большинства участников форума. И занимаете позицию "Я тут самый главный и умный". По существу: 1) Я в своем высказывании указал, что мои выводы являются результатом практической работы(т.е. не являются никаким гаданием, тем более на гуще). 2) Также в своем утверждении я указал, что направление, заданное ASCRUS, при выборе вида селекта является самым правильным, за исключением наличия третьей таблицы Goods. И отличие моего селекта - это отсутствие сканирования таблиц, полное отсутствие. А при связи через третью таблицу (как у ASCRUS) и отсутствии индекса по свойствам естественно будет сканирование, вот и разница. 3) Группировку следует вводить только в случае, когда у одного товара, может быть несколько значений одного свойства. Если (Товар,свойство) уникальная пара, то группировку нужно исключить. 4) ASCRUSMasterZiv: в ASA 9 запрос с 2 EXISTS в WHERE будет равнозначен моему запросу с 2-мя JOIN-ами. Что значит равнозначен? По результату? Или по плану? По результату да. По плану нет. 5) ASCRUSразличные варианты записи одних и тех же запросов на уровне оптимизатора будут иметь одинаковый план запроса - на моей памяти это утверждение верно всегда, кроме случая использования подзапроса в SELECT (т.е. SELECT (SELECT ...) FROM ...), который будет всегда выводится оптимизатором в плане запросов как Subquery по отношению к главному запросу. Так что я к примеру уже давно с таким оптимизатором бросил привычку изголятся куда поставить соединения - в JOIN, IN, EXISTS, DT, LATERAL - толку то, если оптимизатор все равно переделывает в запросе соединения и условия по наиболее оптимальному варианту - нам остается только выбирать форму записи руководствуясь читабельностью запроса и более краткой формой записи. План разный. Привычку бросил - значит не возникает в этом потребности. Но я не говорю, что это плохо. В доказательство приведу варианты одного и того же запроса (по смыслу) с планами: Код: plaintext 1. 2. 3. ( WorkTable ( Intersect *HashIntersect ( IndexScan ( tovar_spell_words t2 ) spell_word_forms_fk[ t2.flag_locate = 1 : 100% Statistics ] ) ( IndexScan ( tovar_spell_words t2 ) spell_word_forms_fk[ t2.flag_locate = 1 : 100% Statistics ] ) ) ) ) Код: plaintext 1. 2. 3. 4. 5. ( Keyset ( HashDistinct ( NestedLoopsJoin[ TRUE ] ( *HashJoin ( HashFilter ( HashFilter ( IndexScan ( tovar_spell_words t2 ) spell_word_forms_fk[ t2.flag_locate = 1 : 100% Statistics ] ) ) ) ( IndexScan ( tovar_spell_words t2 ) spell_word_forms_fk[ ( hash( t2.tovar_id ) in hashmap( t2.tovar_id ) : 100% Guess ) AND ( hash( t2.flag_locate ) in hashmap( t2.flag_locate ) : 100% Guess ) AND ( t2.flag_locate = 1 : 100% Statistics ) ] ) ) ( IndexScan ( tovar_spell_words t1 ) tovar_fk[ t1.tovar_id = t2.tovar_id : .0001358127% Column-Column ] ) ) ) ) ) Код: plaintext 1. 2. 3. 4. 5. ( WorkTable ( *HashJoin ( HashFilter ( HashFilter ( IndexScan ( tovar_spell_words t2 ) spell_word_forms_fk[ t2.flag_locate = 1 : 100% Statistics ] ) ) ) ( IndexScan ( tovar_spell_words t1 ) spell_word_forms_fk[ ( hash( t1.tovar_id ) in hashmap( t2.tovar_id ) : 100% Guess ) AND ( hash( t1.flag_locate ) in hashmap( t2.flag_locate ) : 100% Guess ) AND ( t1.flag_locate = 1 : 100% Statistics ) ] ) ) ) ) Может показаться, что INTERSECT самый лучший вариант, но есть нюансы по которым выбор в его пользу неудачен. Что касается distinct и group by, то выбор group by является более предпочтительным, ввиду природы алгоритма. Distinct это более уверсальное решение, но и менее гибкое и как следствие, возможно, менее производительное. Код: plaintext 1. 2. 3. 4. 5. ( WorkTable ( HashDistinct ( *HashJoin ( HashFilter ( HashFilter ( IndexScan ( tovar_spell_words t2 ) spell_word_forms_fk[ t2.flag_locate = 1 : 100% Statistics ] ) ) ) ( IndexScan ( tovar_spell_words t1 ) spell_word_forms_fk[ ( hash( t1.tovar_id ) in hashmap( t2.tovar_id ) : 100% Guess ) AND ( hash( t1.flag_locate ) in hashmap( t2.flag_locate ) : 100% Guess ) AND ( t1.flag_locate = 1 : 100% Statistics ) ] ) ) ) ) ) Код: plaintext 1. 2. 3. 4. 5. 6. ( WorkTable ( HashGroupBy ( *HashJoin ( HashFilter ( HashFilter ( IndexScan ( tovar_spell_words t2 ) spell_word_forms_fk[ t2.flag_locate = 1 : 100% Statistics ] ) ) ) ( IndexScan ( tovar_spell_words t1 ) spell_word_forms_fk[ ( hash( t1.tovar_id ) in hashmap( t2.tovar_id ) : 100% Guess ) AND ( hash( t1.flag_locate ) in hashmap( t2.flag_locate ) : 100% Guess ) AND ( t1.flag_locate = 1 : 100% Statistics ) ] ) ) ) ) ) Оптимизатор у АСА умный, и даже очень, поэтому хочу повторить, что планы разные, и в некоторых случаях принципиально. Конечно смысла так ковырятся в широкораспространненых задачах - нет. Но у читателей форума может сложиться впечатление, что АСА и впрямь всемогущ и сделает все за нас, но это не так. Когда речь встает о базе объектов для поиска в 2 млн записей, и справочнике свойств в 10 млн все планы становятся очень даже принципиально разными, и это нужно помнить. P.S.: К примеру есть еще один нюанс, связанный с тем, что например товаров с свойством 006 может быть много, а товаров с свойством 007 может быть один. И вот тут при построении запроса через JOIN оптимизатор это заценит, и воспользуется внешним ключом по товару, а в случае с запросом с применением EXIST или INTERSECT (а тем более вложенных селектов) его план будет менее гибким, ввиду вида запроса и будет тупо пересекать большие массивы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2006, 11:49 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
iLLerASCRUS: В который раз убеждаюсь, что Вы относитесь с предвзятым отношением к высказываниям большинства участников форума. И занимаете позицию "Я тут самый главный и умный". В очередной раз я могу Вам сказать, что перед тем как что то говорить, я обычно это проверяю. Поэтому могу Вас сказать, что во первых проверил перед выкладкой сюда свое утверждение на тестовых таблицах с 3 миллионами товаров и 6 миллионами записей свойств, а потом выложил результаты сравнения моего и Ваших запросов сюда (как и следовало ожидать, в плане запроса не было таблицы Goods, так как использовалось всего одно ключевое поле, так что Ваши выссказывания о дополнительном сканировании таблицы абсолютно беспочвенны). Во вторых у автора топика нигде не было в условиях задачи, что одно свойство одного обьекта может иметь несколько значений. Ну а в третьих: iLLerP.S.: К примеру есть еще один нюанс, связанный с тем, что например товаров с свойством 006 может быть много, а товаров с свойством 007 может быть один. И вот тут при построении запроса через JOIN оптимизатор это заценит, и воспользуется внешним ключом по товару, а в случае с запросом с применением EXIST или INTERSECT (а тем более вложенных селектов) его план будет менее гибким, ввиду вида запроса и будет тупо пересекать большие массивы данных. Почитайте пожалуйста в BOL все главы: ASA SQL User's Guide/Query Optimization and Execution и заодно узнаете, что такое семантическое преобразование запроса перед его оптимизацией, почему и когда JOIN = EXISTS, почему DT может быть вынесен в основной план запрос и много еще интересных вещей. P.S. Я вообще глядя на Ваши планы запросов ужасаюсь, почему в планах везде сплошные хэш алгоритмы обработки данных. Обычно оптимизатор использует их только в случае работы с большими обьемоми данных и отсутствием подходящих индексов на таблицах - здесь может быть действительно есть разница по планам запросов. У Вас вообще какая точная версия ASA используется ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2006, 12:45 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
ASCRUS (как и следовало ожидать, в плане запроса не было таблицы Goods, так как использовалось всего одно ключевое поле, так что Ваши выссказывания о дополнительном сканировании таблицы абсолютно беспочвенны). Пардон, но я этого не проверял, я доверился Вам: ASCRUSДумаю не стоит говорить, сколько будет длиться поиск, если будет много товаров и свойств - на каждое условие поиска будет идти дополнительное сканирование таблицы Goods_Properties Но может и не будет скана. ASCRUS Почитайте пожалуйста в BOL все главы: ASA SQL User's Guide/Query Optimization and Execution и заодно узнаете, что такое семантическое преобразование запроса перед его оптимизацией, почему и когда JOIN = EXISTS, почему DT может быть вынесен в основной план запрос и много еще интересных вещей. Читал естественно, и Вы правильно подметили "почему и когда JOIN = EXISTS". Именно это я и говорю, что не всегда существует однозначное преобразование JOIN<->EXISTS. ASCRUS P.S. Я вообще глядя на Ваши планы запросов ужасаюсь, почему в планах везде сплошные хэш алгоритмы обработки данных. Обычно оптимизатор использует их только в случае работы с большими обьемоми данных и отсутствием подходящих индексов на таблицах - здесь может быть действительно есть разница по планам запросов. У Вас вообще какая точная версия ASA используется ? Да, данных много, очень много. Индексы есть, точнее в качестве них ипсользуются внешние ключи и именно их АСА использует (в плане видно). Версия АСА902.3221(вроде). Раз АСА решил использовать хэш алгоритмы, значит ему так нужно, главное направить в нужное русло. На серваке стоит кэш еще не слабый, но это так, к слову пришлось. P.S.: Мне вот не подходит вариант, с отдельными таблицами для каждого типа товара, т.к. нет такого понятия тип, т.е. он один этот тип, но при том раскладе, что одно свойство может иметь несколько значений. В качестве значения свойства товара выступает словоформа (т.е. в одном свойстве(текстовые данные) может встречаться несколько словоформ). Либо, если посмотреть иначе, словоформа это и есть свойство товара, а его значение это его позиция, тогда набор свойств(словоформ) для каждого товара в основном будет различным и сделать для каждого набора словоформ отдельную таблицу нереально. Резюме: в моей задаче возможен путь только с одной таблицей значений свойств товара, а поскольку такой вариант совпадает с вопросом автора, то я ему сообщаю, что лучше примененять запросы с JOINами, как наименее опасный путь(в этом случае мы меньше всего связываем руки оптимизатору АСА). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2006, 13:59 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Рибята ниссортись ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2006, 14:00 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Да все нормально.))) Обычное обсуждение в рабочем порядке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2006, 14:05 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
ASCRUSMasterZiv: в ASA 9 запрос с 2 EXISTS в WHERE будет равнозначен моему запросу с 2-мя JOIN-ами.Ну, раз уж речь зашла о ASA 9, то считаю, что там вообще не нужно ни джойна, ни экзиста... Нужно просто заюзать аналитические функции: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Что бы выдрать строки, удовлетворяющие обоим условиям (красный и 10х10), можно написать вот такой запрос с аналитическими функциями: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 05:38 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Владимор Конев: Требуется список id товаров найти. Соотвествующе Вам еще Group by придется сверху вводить. Вместе с накладывающимся на аналитический запрос сверху фильтром "cnt = 2" все это на больших обьемах записей по идее будет не самым быстрым выполнением запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 06:55 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
ASCRUSВладимор Конев: Требуется список id товаров найти. Соотвествующе Вам еще Group by придется сверху вводить. Вместе с накладывающимся на аналитический запрос сверху фильтром "cnt = 2" все это на больших обьемах записей по идее будет не самым быстрым выполнением запроса.GROUP BY - В ТОПКУ... Можно и DISTINCT заюзать. Для уменьшения объема выборки (ну дабы аналитичекой функции легче работалось) необходимо указать все возможные условия фильтрации во фразе WHERE. Как вариант: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 07:10 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Какая разница - в топку GROUP BY или не в топку - по любому будет TABLE SCAN, что для таблички t с миллионами записей будет не самым удачных запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 07:40 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
ASCRUSКакая разница - в топку GROUP BY или не в топку - по любому будет TABLE SCAN, что для таблички t с миллионами записей будет не самым удачных запросом.А ты думаешь, что при IN, JOIN, EXISTS скана таблицы не будет??? ;) Кроме того, если итоговая выборка невелика, относительно общего объема таблицы, то весьма нетрудно посадить выборку на индекс. Но, спорить не буду - Вам ASAшникам виднее, как оно работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 07:52 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Владимор Конев ASCRUSКакая разница - в топку GROUP BY или не в топку - по любому будет TABLE SCAN, что для таблички t с миллионами записей будет не самым удачных запросом.А ты думаешь, что при IN, JOIN, EXISTS скана таблицы не будет??? ;) Кроме того, если итоговая выборка невелика, относительно общего объема таблицы, то весьма нетрудно посадить выборку на индекс. Но, спорить не буду - Вам ASAшникам виднее, как оно работает. Вот при JOIN/EXISTS/IN как раз выборка и посадится на INDEX SCAN, а WHERE CASE уйдет на TABLE SCAN и использовать индексы оптимизатор не будет. Это кстати насколько я понимаю, не только к ASA относится, но и любому РСУБД - хотел бы я увидеть сервер, который Ваш последний запрос на индексы подсадит для фильтрации по нужным условиям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 10:01 |
|
||
|
|

start [/forum/topic.php?fid=55&tid=2012893]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 442ms |

| 0 / 0 |
