![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
||||
|
||||
|
про индексы не забудьте
их на ваше поле "время" само то повесить |
|
#17
|
||||
|
||||
|
Цитата:
в косоли 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
|
||||
|
||||
|
конечно можно, в поиске все есть
например, с помощью, dbforge studio, которым я пользуюсь, это можно узнать (и добавить) в пару кликов вот еще занятная статья с хабра http://habrahabr.ru/post/70640/ не видел вашего редактирования Для PRIMARY индекс создается автоматом, т.е. да у вас он есть да что за диалог такой наоборот) да, похоже индексы отпадают, смотрите в сторону ухода от большого количества таблиц Последний раз редактировалось Mrak, 20.06.2013 в 12:03. |
| Этот пользователь сказал Спасибо Mrak за это полезное сообщение: | ||
alexusankov (20.06.2013)
| ||
|
#19
|
||||
|
||||
|
Цитата:
Код:
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
|
||||
|
||||
|
Цитата:
|
| Этот пользователь сказал Спасибо Mrak за это полезное сообщение: | ||
alexusankov (20.06.2013)
| ||
|
#21
|
||||
|
||||
|
Цитата:
|
|
#22
|
||||
|
||||
|
Вам спасибо, за подтверждение теории на практике
![]() |
|
#23
|
||||
|
||||
|
Нет like не зло, а очень хорошая штука. Но использовать его надо с пониманием что и как он делает.
Если вы напишите [a] like 'строка%' то будет использован индекс по полю [a], правда такой индекс должен быть создан. А вот если так будет [a] like '%строка%' то тут уже применить индекс невозможно и сответственно тормоза будут приличные. |
| Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
alexusankov (20.06.2013)
| ||
|
#24
|
||||
|
||||
|
Цитата:
Да, в документации написано "MySQL применяет индексы также для сравнений LIKE, если аргумент в выражении LIKE представляет собой постоянную строку, не начинающуюся с символа-шаблона" Но... |
|
#25
|
||||
|
||||
|
Товарищи, а такой еще вопрос, сходной тематики :
Завели базу на сервере, СУБД Microsoft SQL. Планируется в только что созданную таблицу, которую мы обсуждали, в год класть примерно 350 000 записей... У пользователей есть форма, в самодельной программе, которая делает SELECT и показывает записи за один день... Будет ли это тормозить, при 100 тысячах записей? При трехсот? Есть ли рекомендуемый лимит количества записей в таблице для MS SQL 2005? |
|
#26
|
||||
|
||||
|
лимита для кол-ва записей в таблице нет.
при правильной организации таблицы и индексов - тормозов не будет Последний раз редактировалось Yurk@, 20.06.2013 в 15:35. |
|
#27
|
||||
|
||||
|
Цитата:
|
|
#28
|
||||
|
||||
|
Ну лимит надо ставить уже хотя-бы потому что просматривать 100000 записей никому не надо, всегда существует какой-то критерий отбора.
|