Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 20.06.2013, 11:43
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

про индексы не забудьте
их на ваше поле "время" само то повесить
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #17  
Старый 20.06.2013, 11:47
Аватар для alexusankov
alexusankov alexusankov вне форума
Новичок
 
Регистрация: 27.08.2012
Сообщения: 78
Версия Delphi: C++/Delphi 2010
Репутация: 10
По умолчанию

Цитата:
Сообщение от Mrak
про индексы не забудьте
их на ваше поле "время" само то повесить
т.к. структуру и первое заполнение My SQL делаю НЕ я, можно ли просмотреть, есть ли эти индексы в уже существующей структуре MySQL?
в косоли show index from t124; выдает 2 строки, т.к. индексы есть, я так понимаю.
Код:
+------+-------------+------------+----------------+-------------+-----------+-------------+----------+--------+---------+
| Table | Non_unique | Key_name | Seq_in_index  | Column_name | Collation | Cardinality | Sub_part | Packed | Comment |
+------+-------------+------------+----------------+-------------+-----------+-------------+----------+--------+---------+
| t124  |                0 | PRIMARY   |            1          | Time    | A         |        NULL |     NULL | NULL   |         |
| t124  |                0 | PRIMARY   |            2          | Sensor | A         |       25200 |     NULL | NULL   |         |
+------+-------------+------------+----------------+-------------+-----------+-------------+----------+--------+---------+
Статью с хабра прочитал и загуглил. Выходит индексы отпдают?

Последний раз редактировалось alexusankov, 20.06.2013 в 11:57.
Ответить с цитированием
  #18  
Старый 20.06.2013, 11:55
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

конечно можно, в поиске все есть
например, с помощью, dbforge studio, которым я пользуюсь, это можно узнать (и добавить) в пару кликов
вот еще занятная статья с хабра
http://habrahabr.ru/post/70640/
не видел вашего редактирования
Для PRIMARY индекс создается автоматом, т.е. да у вас он есть

да что за диалог такой наоборот)
да, похоже индексы отпадают, смотрите в сторону ухода от большого количества таблиц
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")

Последний раз редактировалось Mrak, 20.06.2013 в 12:03.
Ответить с цитированием
Этот пользователь сказал Спасибо Mrak за это полезное сообщение:
alexusankov (20.06.2013)
  #19  
Старый 20.06.2013, 12:19
Аватар для alexusankov
alexusankov alexusankov вне форума
Новичок
 
Регистрация: 27.08.2012
Сообщения: 78
Версия Delphi: C++/Delphi 2010
Репутация: 10
По умолчанию

Цитата:
Сообщение от Mrak
Для PRIMARY индекс создается автоматом, т.е. да у вас он есть
да что за диалог такой наоборот)
да, похоже индексы отпадают, смотрите в сторону ухода от большого количества таблиц
переписал участок
Код:
QMySQL.SQL.Text := 'SELECT AV FROM t' + IntToStr(index) + ' WHERE (Time LIKE ' + #39 + GetValues('Data') + ' ' + GetValues('Hour') + '%' +  #39 + ' ) AND (Sen = ' + IntToStr(i) + ')'; 
на
Код:
a := GetValues('Hour'); // текущий час
b := GetValues('Hour2'); // текущий час  + 1
QMySQL.SQL.Text := 'SELECT AV FROM t' + IntToStr(index) + ' WHERE (Time > ' + #39 + GetValues('Data') + ' ' + a + #39 + ' ) AND (Time < ' + #39 + GetValues('Data') + ' ' + b + #39 + ' ) AND (Sen = ' + IntToStr(i) + ')';
и это просто потрясающе, товарищи!!!!
время всего танца с бубном, и плясок вокруг базы данных, записи логов консоли итп, всей программы, сократилось, с 12 минут до 31 секунды!! Я в восхищении!
Выходит - LIKE - большое зло?
Ответить с цитированием
  #20  
Старый 20.06.2013, 12:26
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Цитата:
Сообщение от alexusankov
Выходит - LIKE - большое зло?
Вывод очевиден) но иногда без него никак
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
Этот пользователь сказал Спасибо Mrak за это полезное сообщение:
alexusankov (20.06.2013)
  #21  
Старый 20.06.2013, 12:30
Аватар для alexusankov
alexusankov alexusankov вне форума
Новичок
 
Регистрация: 27.08.2012
Сообщения: 78
Версия Delphi: C++/Delphi 2010
Репутация: 10
По умолчанию

Цитата:
Сообщение от Mrak
Вывод очевиден) но иногда без него никак
Это потрясающе ребят. Спасибо большое за помощь!
Ответить с цитированием
  #22  
Старый 20.06.2013, 12:38
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Вам спасибо, за подтверждение теории на практике
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #23  
Старый 20.06.2013, 12:38
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Нет like не зло, а очень хорошая штука. Но использовать его надо с пониманием что и как он делает.
Если вы напишите [a] like 'строка%' то будет использован индекс по полю [a], правда такой индекс должен быть создан.
А вот если так будет [a] like '%строка%' то тут уже применить индекс невозможно и сответственно тормоза будут приличные.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
alexusankov (20.06.2013)
  #24  
Старый 20.06.2013, 12:47
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Цитата:
Сообщение от Страдалецъ
Если вы напишите [a] like 'строка%' то будет использован индекс по полю
Разве у ТС не так? со спец.символа не начинается и проиндексирован, но все равно медленно работало

Да, в документации написано
"MySQL применяет индексы также для сравнений LIKE, если аргумент в выражении LIKE представляет собой постоянную строку, не начинающуюся с символа-шаблона"

Но...
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #25  
Старый 20.06.2013, 13:05
Аватар для alexusankov
alexusankov alexusankov вне форума
Новичок
 
Регистрация: 27.08.2012
Сообщения: 78
Версия Delphi: C++/Delphi 2010
Репутация: 10
По умолчанию

Товарищи, а такой еще вопрос, сходной тематики :
Завели базу на сервере, СУБД Microsoft SQL. Планируется в только что созданную таблицу, которую мы обсуждали, в год класть примерно 350 000 записей...
У пользователей есть форма, в самодельной программе, которая делает SELECT и показывает записи за один день...
Будет ли это тормозить, при 100 тысячах записей? При трехсот?
Есть ли рекомендуемый лимит количества записей в таблице для MS SQL 2005?
Ответить с цитированием
  #26  
Старый 20.06.2013, 13:58
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

лимита для кол-ва записей в таблице нет.
при правильной организации таблицы и индексов - тормозов не будет
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 20.06.2013 в 15:35.
Ответить с цитированием
  #27  
Старый 20.06.2013, 14:38
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Цитата:
Сообщение от Mrak
Разве у ТС не так? со спец.символа не начинается и проиндексирован, но все равно медленно работало

Да, в документации написано
"MySQL применяет индексы также для сравнений LIKE, если аргумент в выражении LIKE представляет собой постоянную строку, не начинающуюся с символа-шаблона"

Но...
Видимо не так. Надо смотреть план запроса. Там будет видно, используется индекс или нет.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #28  
Старый 20.06.2013, 14:41
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ну лимит надо ставить уже хотя-бы потому что просматривать 100000 записей никому не надо, всегда существует какой-то критерий отбора.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:46.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter