Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2011, 11:19   #1
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
Лампочка MySQL - увеличение быстродействия

Здравствуйте, программисты!

Создаю проект, начинаю проектировать под него базу данных. Проект будет довольно крупным, данных в базе тоже будет не мало. До этого никогда не сталкивался с проблемой быстродействия БД, так как объем информации не был таким большим.

Сильно не пинайте, если вопросы будут не совсем профессионального уровня. А интересует следующее.

1) Чем различаются типы столбцов я понял. Но, допустим, существует тип данных "TINYTEXT", а существует "TEXT". Во второй разрешается записывать гораздо больше символов. Вопрос: Для чего нужен тогда TINYTEXT7 Аналогично с числовыми типами.

2) Как можно ускорить процесс поиска информации по базе? Слышал краем уха о каких-то ключах. Что это такое и с чем это едят?

3) Что еще можете посоветовать, чтобы работа с базой происходила быстрее?

Подкиньте информацию на эту тему, поделитесь ссылками. Заранее спасибо.
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 11.01.2011, 17:44   #2
jmadhead
Пользователь
 
Регистрация: 10.09.2009
Сообщений: 19
По умолчанию

По поводу быстродействия - осваивай индексы.
jmadhead вне форума Ответить с цитированием
Старый 11.01.2011, 19:19   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Поройся: http://yandex.ua/yandsearch?text=%D1...ld=ua&lr=20554
Не будет лишним, поверь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.01.2011, 09:25   #4
NZero
Пользователь
 
Аватар для NZero
 
Регистрация: 16.04.2010
Сообщений: 35
По умолчанию

1) TINYTEXT и TEXT отличаются по максимальной длине, а значит занимают в бд разное количество места. т.е. если тебе не надо писать поэму то выбираешь TINYTEXT. Тоже самое и с числовыми типами.
2) Сам столкнулся с такой проблемой и выяснилось, что индексы к сожалению не всегда помогают. Очень много зависит от того, что тебе надо найти, сколько таблиц при этом будет участвовать в поиске и какой объем информации при этом надо перебирать.
3) Если большой объем информации, не советую писать триггеры и хранимые процедуры, а вешать запросы на какой нить интерфейс, если такой у тебя будет. Можешь использовать представления, очень помогают при работе с бд.
NZero вне форума Ответить с цитированием
Старый 12.01.2011, 09:41   #5
jmadhead
Пользователь
 
Регистрация: 10.09.2009
Сообщений: 19
По умолчанию

Цитата:
индексы к сожалению не всегда помогают
думаю индексы помогают везде, кроме LIKE, причём, на сколько я помню,
Код:
LIKE %слово
работает быстрее, чем
Код:
LIKE слово%
, без индексов точно никуда, а если не помогают, то надо смотреть структуру базы
jmadhead вне форума Ответить с цитированием
Старый 12.01.2011, 10:26   #6
NZero
Пользователь
 
Аватар для NZero
 
Регистрация: 16.04.2010
Сообщений: 35
По умолчанию

а если в базе больше миллиона записей, и тебе надо найти последнюю запись у нескольких клиентов и при этом в запросе фигурируют две таблицы. Вот в этом случает индексы мне не помогли(

Цитата:
Сообщение от jmadhead Посмотреть сообщение
без индексов точно никуда
не могу не согласиться с этим!

Последний раз редактировалось Stilet; 17.01.2011 в 13:41.
NZero вне форума Ответить с цитированием
Старый 13.01.2011, 09:20   #7
jmadhead
Пользователь
 
Регистрация: 10.09.2009
Сообщений: 19
По умолчанию

Цитата:
Сообщение от NZero Посмотреть сообщение
а если в базе больше миллиона записей, и тебе надо найти последнюю запись у нескольких клиентов и при этом в запросе фигурируют две таблицы. Вот в этом случает индексы мне не помогли(
Думаю кластеризованные индексы могли бы помоч. Точно не уверен...но они же физически упорядочивают строки.
jmadhead вне форума Ответить с цитированием
Старый 13.01.2011, 10:55   #8
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Имхо, быстродействие при больших объемах данных в первую очередь зависит от грамотного подхода. Например, если у таблицы что-то висит на OnAfterScroll, то в DBGrid-e при прокрутке курсор должен оставаться на той же записи (типа, DBGridEh + МemTableEh).. Количество запросов сразу уменьшится в десятки раз. Это типичная ошибка.
Никогда не выводить информации больше, чем необходимо пользователю. Еще заметил, что ужасно тормозят работу запросы, типа
Код:
select sum(a.summa), sum(b.summa) from table1 a, table2 b
Два запроса
Код:
1). select sum(summa) from table1
2). select sum(summa) from table2
работают во много раз быстрее, чем один предыдущий.
По возможности не использовать LIKE.
Ну, и как писали, без индексов никуда.
_SERGEYX_ вне форума Ответить с цитированием
Старый 17.01.2011, 13:39   #9
Locker
 
Регистрация: 15.01.2011
Сообщений: 7
По умолчанию

Если тебе нужна уникальная строка в таблице, используй в конце LIMIT 1 . Например "SELECT * FROM `bd` WHERE `id`='10' LIMIT 1;", чтобы MySQL перестал сканировать данные в таблице дальше.

Индексируй столбцы, по которым делаешь запрос "WHERE". Например если запрос такой "SELECT * FROM `bd` WHERE `Age`='20'" то индексирование "Age" сыграет большую роль в скорости поиска.

Вообще, многое можно прочитать на других сайтах, есть много статей на эту тему
Locker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение быстродействия ChaosDev Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 22.11.2010 03:32
Вопрос быстродействия _Денис C++ Builder 1 14.11.2009 17:00
Сравнение быстродействия алгоритмов Pti44ka Помощь студентам 9 13.11.2009 13:41
php и mysql увеличение ячейки Garacio_cain PHP 1 07.08.2009 23:57
Падение быстродействия в макросе skif93 Microsoft Office Excel 8 12.04.2009 14:49