Ні, частина визначення не є обов’язковою, коли ви створюєте збережену процедуру. Використовується, коли потрібно створити визначник.30 червня 2020 р
Речення DEFINER вказує обліковий запис MySQL, який буде використовуватися під час перевірки привілеїв доступу під час активації тригера.
DEFINER — це обліковий запис, указаний як DEFINER під час створення збереженої процедури або перегляду (див. розділ вище). INVOKER — обліковий запис, що викликає підпрограму або представлення.
Параметр DEFINER вказує, який обліковий запис призначено створювачем перегляду. У цьому випадку для параметра встановлено значення CURRENT_USER, тому визначником є користувач, який фактично виконує оператор CREATE VIEW. Параметр SQL SECURITY може приймати аргумент DEFINER або INVOKER.
Але є способи видалити їх після створення файлу дампа.
- Відкрийте файл дампа в текстовому редакторі та замініть усі входження DEFINER=root@localhost порожнім рядком ""
- Відредагуйте дамп (або передайте вихід) за допомогою perl : perl -p -i.bak -e "s/DEFINER=\`\w.*\`@\`\d1.*[0-3 ]\`//g" mydatabase.sql.
A) Ось кілька порад щодо налаштування MySQL, які допоможуть вам виконувати запити швидше.
- Уникайте використання функцій у предикатах.
- Оптимізація підзапитів MySQL.
- Оптимізація запитів.
- Використовуйте DISTINCT і UNION лише за необхідності.
- Уникайте непотрібних стовпців у пропозиції Select.