Як писати оптимізовані sql запити stack overflow російською

Привіт колеги =). Ось читав я статті про запити sql від фахівців (ще років зо два тому), але випадковим чином побачив не стикування зі статтею. Це стосується оптимізація запиту.

Використання "*" в запиті не рекомендується, що знижує продуктивність виконання запиту сервером.
зробив запиту:

заданий 10 Вересня '12 о 15:15

Це чому зірочка зрозуміліше для читає запит, ніж явне вказівку колонок? Оптимізація в цьому випадку зовсім ілюзорна. З особистого досвіду - ніколи не гидую замінювати зірочку на укзаніе довільного поля в підзапитах. Це дозволить компілятору не відволікатися на складання списку колонок - renegator 11 Вересня '12 о 5:10

Використання зірочки в запиті не рекомендується не через підвищення продуктивності, а з тієї причини, що, використовуючи її в запиті, ви ризикуєте згодом нарватися на падіння деяких своїх запитів / процедур при зміні таблиці.

Він перестане виконуватися, якщо в table2 додасться ще одна колонка.

За другим: Не бачу сенсу у використанні left join. Якщо вже об'єднувати таблиці, що несуть однаковий сенс, то робити це треба через union all. А чи потрібно це - залежить від бізнес-логіки.

відповідь дан 10 Вересня '12 о 16:36

А підкажіть, а при звичайному запиті, чи варто писати назву полів або простіше "*". Щодо другого запиту наприклад: SELECT u. *, A. * FROM users as u LEFT JOIN таблиця використовується тільки в цьому проекті as a ON u.id = a.id - Node_pro 10 Вересня '12 о 16:42

Якщо запит написаний для "подивитися, що в таблиці", і буде після видалений, то можна і так. У всіх інших випадках хороший тон - перерахування колонок. - minamoto 10 Вересня '12 о 16:45

Попередня оптимізація - ЗЛО!

Ви пишіть як ви вважаєте за потрібне, а вже в слідстві тестування програми дивіться що і скільки виконується. Ведіть лог звернень до бази, який запит, скільки виконується, скільки записів повернуло.

На "важких" запитах робіть EXPLAIN і додавайте потрібні індекси чи інакше написати запит. Все приходить з досвідом, відразу навчиться писати "оптимізовані" запити не вийде.

Схожі статті