|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.01.2011, 11:19 | #1 |
Форумчанин
Регистрация: 21.02.2009
Сообщений: 372
|
MySQL - увеличение быстродействия
Здравствуйте, программисты!
Создаю проект, начинаю проектировать под него базу данных. Проект будет довольно крупным, данных в базе тоже будет не мало. До этого никогда не сталкивался с проблемой быстродействия БД, так как объем информации не был таким большим. Сильно не пинайте, если вопросы будут не совсем профессионального уровня. А интересует следующее. 1) Чем различаются типы столбцов я понял. Но, допустим, существует тип данных "TINYTEXT", а существует "TEXT". Во второй разрешается записывать гораздо больше символов. Вопрос: Для чего нужен тогда TINYTEXT7 Аналогично с числовыми типами. 2) Как можно ускорить процесс поиска информации по базе? Слышал краем уха о каких-то ключах. Что это такое и с чем это едят? 3) Что еще можете посоветовать, чтобы работа с базой происходила быстрее? Подкиньте информацию на эту тему, поделитесь ссылками. Заранее спасибо.
No name. Just Linel.
|
11.01.2011, 17:44 | #2 |
Пользователь
Регистрация: 10.09.2009
Сообщений: 19
|
По поводу быстродействия - осваивай индексы.
|
11.01.2011, 19:19 | #3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Поройся: http://yandex.ua/yandsearch?text=%D1...ld=ua&lr=20554
Не будет лишним, поверь.
I'm learning to live...
|
12.01.2011, 09:25 | #4 |
Пользователь
Регистрация: 16.04.2010
Сообщений: 35
|
1) TINYTEXT и TEXT отличаются по максимальной длине, а значит занимают в бд разное количество места. т.е. если тебе не надо писать поэму то выбираешь TINYTEXT. Тоже самое и с числовыми типами.
2) Сам столкнулся с такой проблемой и выяснилось, что индексы к сожалению не всегда помогают. Очень много зависит от того, что тебе надо найти, сколько таблиц при этом будет участвовать в поиске и какой объем информации при этом надо перебирать. 3) Если большой объем информации, не советую писать триггеры и хранимые процедуры, а вешать запросы на какой нить интерфейс, если такой у тебя будет. Можешь использовать представления, очень помогают при работе с бд. |
12.01.2011, 09:41 | #5 | |
Пользователь
Регистрация: 10.09.2009
Сообщений: 19
|
Цитата:
Код:
Код:
|
|
12.01.2011, 10:26 | #6 |
Пользователь
Регистрация: 16.04.2010
Сообщений: 35
|
а если в базе больше миллиона записей, и тебе надо найти последнюю запись у нескольких клиентов и при этом в запросе фигурируют две таблицы. Вот в этом случает индексы мне не помогли(
не могу не согласиться с этим! Последний раз редактировалось Stilet; 17.01.2011 в 13:41. |
13.01.2011, 09:20 | #7 |
Пользователь
Регистрация: 10.09.2009
Сообщений: 19
|
Думаю кластеризованные индексы могли бы помоч. Точно не уверен...но они же физически упорядочивают строки.
|
13.01.2011, 10:55 | #8 |
Участник клуба
Регистрация: 07.07.2007
Сообщений: 1,518
|
Имхо, быстродействие при больших объемах данных в первую очередь зависит от грамотного подхода. Например, если у таблицы что-то висит на OnAfterScroll, то в DBGrid-e при прокрутке курсор должен оставаться на той же записи (типа, DBGridEh + МemTableEh).. Количество запросов сразу уменьшится в десятки раз. Это типичная ошибка.
Никогда не выводить информации больше, чем необходимо пользователю. Еще заметил, что ужасно тормозят работу запросы, типа Код:
Код:
По возможности не использовать LIKE. Ну, и как писали, без индексов никуда. |
17.01.2011, 13:39 | #9 |
Регистрация: 15.01.2011
Сообщений: 7
|
Если тебе нужна уникальная строка в таблице, используй в конце LIMIT 1 . Например "SELECT * FROM `bd` WHERE `id`='10' LIMIT 1;", чтобы MySQL перестал сканировать данные в таблице дальше.
Индексируй столбцы, по которым делаешь запрос "WHERE". Например если запрос такой "SELECT * FROM `bd` WHERE `Age`='20'" то индексирование "Age" сыграет большую роль в скорости поиска. Вообще, многое можно прочитать на других сайтах, есть много статей на эту тему |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сравнение быстродействия | 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 |