Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Оптимальное использование MySQL
Форумы портала PHP.SU » » Вопросы новичков » Оптимальное использование MySQL

Страниц (1): [1]
 

1. Vaio - 23 Мая, 2013 - 20:19:27 - перейти к сообщению
Уважаемые пользователи, поделитесь, пожалуйста, опытом работы с MySQL. Как оптимизировать ее работу, чтобы чтобы были максимально возможные маленькие затраты ресурсов и времени?

Говорят, что использовать JOIN плохо, а что тогда лучше n-раз сделать SELECT?
Говорят, нужно использовать индексы. Если у меня нет запросов с LIKE, они мне нужны? Если нужны то подскажите где можно доступно почитать об этом с примерами использования.
Что лучше использовать MyISAM или InnoDB? Настолько я понял MyISAM быстрее для малых таблиц, когда требуется выборка через SELECT, а InnoDB для больших таблиц и для JOIN. Тогда можно например для таблицы users (~ 200 записей) использовать MyISAM, а для таблицы logs (~ 10000 записей) InnoDB, или лучше что-то одно?

Также еще ​​нашел вот такую ​​статью, стоит прислушиваться к этим советам?
2. Мелкий - 23 Мая, 2013 - 20:50:25 - перейти к сообщению
Vaio пишет:
Говорят, что использовать JOIN плохо

Так говорят те, кто СУБД пользоваться и не умеет.

Vaio пишет:
Если у меня нет запросов с LIKE, они мне нужны?

like к индексам отношения как раз не имеет, кроме как при like 'константа%' или like 'константа' использоваться индекс не может.
Индексы, безусловно, нужны. Для тех полей, по которым происходит выборка данных.

Vaio пишет:
Что лучше использовать MyISAM или InnoDB?

innoDB, из-за транзакционности.

Очень рекомендую книжку "MySQL. Оптимизация производительности" (Б.Шварц), если интересна тема.
3. EuGen - 23 Мая, 2013 - 20:54:02 - перейти к сообщению
Vaio пишет:
Говорят, что использовать JOIN плохо, а что тогда лучше n-раз сделать SELECT?

Если JOIN идёт, к примеру, по внешнему ключу - то чем же это плохо? Напротив, это будет выгоднее двух запросов, поскольку сэкономит накладные расходы. Дело другое, если подобный JOIN делается по условию, при котором СУБД придётся создавать временные таблицы и т.п. (проще говоря - почти при любом неиндексированном объединении)
Vaio пишет:
Что лучше использовать MyISAM или InnoDB?

Почитайте мануал. InnoDB поддерживает намного больше опций - транзакционность, триггеры, внешние ключи и т.п. - а MyISAM может обслуживать полнотекстовые индексы. Правда, в MySQL >=5.6 InnoDB и полнотекстовые индексы поддерживает.
4. vanicon - 23 Мая, 2013 - 21:12:39 - перейти к сообщению
Добавлю ко всему выше сказанному, что еще одно основное отличие innoDB от MyISAM в том, что если к таблице будут параллельно поступать запросы, то MyISAM будет блокировать таблицу при каждом обращении, и понятно что о параллельном доступе к таблице нет и речи, тогда как innoDB не всегда блокирует таблицу.
А на счет Joina то тут да 1 запрос сразу лучше чем 2 идущих подряд.
Но злоупотреблять joinom не стоит, если можно обойтись без связей таблиц то лучше их не связывать...

 

Powered by ExBB FM 1.0 RC1