|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
vichkaкак мне заменить остальные , если там значения или выбранные из dropdownlist, a не из textbox1) если требуется проверка на полное соответствие, то лучше вовсе отказаться от Like в пользу = 2) если под всеми понимается Null , то да - можно заменитьvichkaЗапустила- особой разницы не увидела. Стоит ли заменять?Сейчас, наверное, не стоит, но имейте в виду на будущее. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2013, 19:04 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
Thanks very much, SERVIT! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2013, 19:22 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
Всем привет! Я опять застряла на одном из запросов. Все тот же продукт, на той же платформе. Упростила запрос до минимума: запрос 1: Код: sql 1. 2. 3. 4. 5. 6.
Возвращает 516 записей за 2.554 сек. Query Plan Relative cost = 723139 ◾Call module B. ◾Output the row. module B ◾Call module C, which populates temp-file A. ◾Call module D, which populates temp-file B. ◾Generate a stream of idkey values using the multi-index combination: ((temp-file A) INTERSECT (temp-file B)) ◾For each idkey value: Read master map Client.MessageArchive.Primary, using the given idkey value. Accumulate the count(ID). module C ◾Read index map Client.MessageArchive.DateArchived, looping on DateArchived (with a range condition) and ID. ◾For each row: Add a row to temp-file A, subscripted by ID, with no node data. module D ◾Read index map Client.MessageArchive.TemplateIDUsed, looping on %SQLUPPER(TemplateIDUsed) (with a %STARTSWITH range condition) and ID. ◾For each row: Add a row to temp-file B, subscripted by ID, with no node data. А этот запрос: запрос 2: Код: sql 1. 2. 3. 4. 5.
Возвращает 516 записей за 0.057 сек. Query Plan Relative cost = 1013388 ◾Call module B. ◾Output the row. module B ◾Call module C, which populates temp-file A. ◾Call module D, which populates temp-file B. ◾Generate a stream of idkey values using the multi-index combination: ((temp-file A) INTERSECT (temp-file B)) ◾For each idkey value: Read master map Client.MessageArchive.Primary, using the given idkey value. Accumulate the count(ID). module C ◾Read index map Client.MessageArchive.DateArchived, looping on DateArchived (with a range condition) and ID. ◾For each row: Add a row to temp-file A, subscripted by ID, with no node data. module D ◾Read index map Client.MessageArchive.IssuedBy, looping on IssuedBy (with a %STARTSWITH range condition) and ID. ◾For each row: Add a row to temp-file B, subscripted by ID, with no node data. Класс проиндексирован по всем этим полям (см. выше переписку). Как заставить работать идексацию? В Cache2013 можно было бы использовать %ALLINDEX. А в Cache2008? Или как можно по-другому оптимизировать запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2013, 15:59 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
vichka , Код: sql 1. 2. 3. 4. 5. 6.
Можно было бы выключить индекс TemplateIDUsed , но, к сожалению, в 2008 версии недоступны %ALLINDEX и %IGNOREINDEX (или %IGNOREINDICES ), поэтому пробуйте варианты с подзапросом, например: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2013, 17:10 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
servit vichka , Код: sql 1.
Плохая наследственность... Это то, что досталось от создателя проекта... Теперь вот пытаюсь оптимизировать ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2013, 20:23 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
vichkaЭто то, что досталось от создателя проекта... Теперь вот пытаюсь оптимизироватьЭто-то понятно. Непонятно, почему Вы эту конструкцию до сих пор оставляете, когдаservitНо лучше Like '%' заменить на is not null :АленочкаLike '%' - это использовать вообще не советую, жутко тормозная тема.vichkaЗато когда заменила MobileNumber с '%' на MobileNumber с NULL , быстродействие значительно возросло! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2013, 20:51 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
Кроме тогоДокументацияFor performance reasons, the predicate %STARTSWITH 'abc' is preferable to the equivalent predicate LIKE 'abc%' .Поэтому вместо Код: sql 1.
лучше Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2013, 11:01 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
О, как! %STARTSWITH - это оптимизированный в Cache %LIKE :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2013, 08:00 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
servit... vichkaЗапустила- особой разницы не увидела. Стоит ли заменять? Сейчас, наверное, не стоит, но имейте в виду на будущее... Поэтому оставила как есть, если запрос работает достаточно быстро. Запросов очень много, и параметров с LIKE в них предостаточно. А на будущее для себя учла! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2013, 12:53 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
У меня еще один вопрос. Нашла несоответствие в полях. Есть несколько классов, которые имеют однаковое поле MessageID. В трех классах оно объявлено как %Integer (это автосчетчик и Primary Key в одном из них- MessageArchive), а в одном, четвертом, как %String (ReceiptArchive), причем в этом же классе это поле стоит в Primary Key как MessageID || ReceiptResponseID. Я хотела поменять это поле на %Integer тоже. Можно ли это делать, если в этой таблице полно записей, или у меня все рухнет (хотя в тестовой системе вроде работает с замененным полем...)? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2013, 13:05 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
vichkaМожно ли это делать, если в этой таблице полно записей, или у меня все рухнет?Раз Вы спрашиваете, то - нет, не стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2013, 13:31 |
|
|
start [/forum/topic.php?fid=39&gotonew=1&tid=1557136]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
139ms |
get topic data: |
10ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 259ms |
0 / 0 |