Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Оптимизмровать запрос / 14 сообщений из 14, страница 1 из 1
12.02.2008, 11:02
    #35126101
faustt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизмровать запрос
Привет. Помогите оптимизировать запрос. Этот очень долго отрабатывает, можно ли написать както по другому? Суть такова что у меня есть колонка где сидит Datetime, и мне нужно выбрать из нее записи по дате, не обращая внимания на время.

SELECT *
FROM some_table
WHERE CONVERT(varchar, datetime_field, 102) like CONVERT(varchar, some_date, 102) + '%'
...
Рейтинг: 0 / 0
12.02.2008, 11:11
    #35126147
Гость@
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизмровать запрос
Код: plaintext
1.
2.
3.
SELECT *
FROM some_table 
WHERE cast(datetime_field as D) = cast(some_date as D)
А что за база такая?
...
Рейтинг: 0 / 0
12.02.2008, 11:16
    #35126178
faustt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизмровать запрос
В смысле, что за база такая?

По моему cast от convert по быстродействию не особо отличаются.
...
Рейтинг: 0 / 0
12.02.2008, 11:21
    #35126200
Оптимизмровать запрос
SELECT *
FROM some_table
WHERE CONVERT(varchar, datetime_field, 102) like CONVERT(varchar, some_date, 102) + '%'
Оптимизацией запросов на T-SQL занимаются в форуме по MS SQL
Тут
...
Рейтинг: 0 / 0
12.02.2008, 11:23
    #35126209
faustt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизмровать запрос
Извиняюсь. Чисто автоматически создал тему в Фоксовской ветке.
...
Рейтинг: 0 / 0
12.02.2008, 11:25
    #35126224
Гость@
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизмровать запрос
1. просто в VFP9в хэлпе не нашел функции CONVERT()
2. cast() все же стандарт SQL-я
3. ИМХО знак равенства быстрей обрабатывается, чем Like
4. просто попробуй :)
...
Рейтинг: 0 / 0
12.02.2008, 11:25
    #35126225
faustt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизмровать запрос
Прошу модераторов закрыть эту тему в этой ветке.
...
Рейтинг: 0 / 0
12.02.2008, 11:29
    #35126240
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизмровать запрос
fausttПривет. Помогите оптимизировать запрос. Этот очень долго отрабатывает, можно ли написать както по другому? Суть такова что у меня есть колонка где сидит Datetime, и мне нужно выбрать из нее записи по дате, не обращая внимания на время.

SELECT *
FROM some_table
WHERE CONVERT(varchar, datetime_field, 102) like CONVERT(varchar, some_date, 102) + '%'
Судя по команде CONVERT, это у вас MS SQL. Не думаю, что хорошо сравнивать даты, переведя их в varchar.
Какой размер таблицы?
Есть ли индекс по полю datetime_field ?
Из нескольких вариантов я для себя выбрал сравнение через части даты:
Код: plaintext
1.
2.
DATEPART(yy, DDok) = DATEPART(yy, @data1) 
AND DATEPART(mm, DDok) = DATEPART(mm, @data1)
AND DATEPART(dd, DDok) = DATEPART(dd, @data1)
Вариант с LIKE самы плохой. Можно ведь и просто сравнить. Зачем LIKE ?
Код: plaintext
CONVERT(CHAR( 10 ), DDok,  104 ) = @data
С уважением, Алексей
...
Рейтинг: 0 / 0
12.02.2008, 11:46
    #35126321
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизмровать запрос
...
Рейтинг: 0 / 0
12.02.2008, 11:54
    #35126361
faustt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизмровать запрос
Индекса нету, ищу по вьюшке. Попродую Вашт предложенные варианты.
...
Рейтинг: 0 / 0
12.02.2008, 12:03
    #35126401
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизмровать запрос
Мое предложение :)
Код: plaintext
1.
2.
3.
SELECT *
FROM some_table 
WHERE convert(char( 10 ),datetime_field, 102 ) = convert(char( 10 ),some_date, 102 )
...
Рейтинг: 0 / 0
12.02.2008, 12:49
    #35126609
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизмровать запрос
fausttИндекса нету, ищу по вьюшке. Попродую Вашт предложенные варианты.
А с чего вы взяли что если вы ищете по View, то индекс не будет использоваться, если он есть. Посмотрите план запроса.
С уважением, Алексей
...
Рейтинг: 0 / 0
12.02.2008, 14:46
    #35127133
faustt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизмровать запрос
Aleksey-K fausttИндекса нету, ищу по вьюшке. Попродую Вашт предложенные варианты.
А с чего вы взяли что если вы ищете по View, то индекс не будет использоваться, если он есть. Посмотрите план запроса.
С уважением, Алексей

Имел ввиду что индекса по этому полю нету. Есть какието подводные камни при добавлении индекса? У меня данная таблица много где используется, не хочу чтобу все полетело.
...
Рейтинг: 0 / 0
12.02.2008, 15:09
    #35127251
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизмровать запрос
индекс может:
увеличить скорость исполнения запроса;
ни как не повлиять на его скорость;
замедлить занесение данных.
Все зависит от конкретной ситуации. По этому написана не одна статья.
Вроде можно создать виртуальный индекс. И смотреть по плану выполнения запроса ;)
Ссылку, где это все можно посмотреть я выше привел.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Оптимизмровать запрос / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]