Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Оптимизация sql запросов... (https://forum.antichat.xyz/showthread.php?t=74982)

Doom123 25.06.2008 17:53

Оптимизация sql запросов...
 
МОжет ли кто нибудь дать советы по оптимизации скл запросов... И примеры кэширования?

Naydav 25.06.2008 18:32

Ну из самого простого, но не менее важного,

- это правильные индексы!!!!(их не так уж и мало)
- правильный формат данных (если дата, то "timestamp", если флаг, то "bool")
- если нужно выбрать только title, то пишем
"SELECT title FROM table", а не "SELECT * FROM table" Это важно!!!
- использование функций (MAX(), MIN(), NOW()), а не придумывать велосипед, функций очень много
- UNIQUE индексы быстрее, чем индексы не по уникальным полям
- использование точных значений
- Поля NOT NULL экономят место и исключают проверки
- Вместо text лучше использовать character varying(255), или меньше
- Чем меньше размер типа, тем лучше (int, tinyint)
- Использовать наиболее простые запросы SQL. Т.е. без всяких подзапросов, с наименьшим числом объединений данных таблиц и условий, ну и т.п.
- объединять данные в одну таблицу, дабы уменьшить число SQL запросов
- НОРМАЛИЗАЦИЯ ТАБЛИЦ!!!!!


Кэширование:
Цитата:

http://www.mysql.com/doc/ru/Query_Cache.html
Вообще нужно сначала иследовать бд
сделать "VACUUM ANALYZE"
(EXPLAIN [ ANALYZE ] [ VERBOSE ])

Jer1cho 25.06.2008 19:14

Вот очень интересная статья:
http://habrahabr.ru/blog/sql/45174.html

mouse.pro 25.06.2008 19:40

Мне нужно сделать запрос:
Скопировать из таблицы test все строки в таблицу test2 где id='1'
Я решил сделать так:
select * from test1 where id='1' into outfile 'tmp.txt'
load data infile 'tmp.txt' into table test2

Можно как-то проще сделать?

Naydav 25.06.2008 19:46

Ну так как ты копируешь, точно не правильно
Вернее это извращение!

Правильно
Цитата:

insert into test2 (select * from test1 where id=1)

mouse.pro 25.06.2008 19:50

Цитата:

Сообщение от Naydav
Ну так как ты копируешь, точно не правильно
Вернее это извращение!

Правильно

Ну это я не сам писал запрос, мне подсказали как знали.
Спасибо, твой запрос помог)


Время: 09:40