Триггер или несколько запросов?Эффективность производительности? - PullRequest
0 голосов
/ 11 июля 2011

Я разрабатываю веб-приложение, используя php и mysql. У меня есть небольшое сомнение в базе данных. Приложение похоже на

  1. Пользователи регистрируются.
  2. Пользователи вводят рабочую нагрузку (после входа в систему конечно :)).
  3. Пользователь выходит из системы.

Теперь есть несколько типов входов, которые я принимаю в одной форме. Скажем, есть 3 типа входов, и они хранятся в 7 разных таблицах (требование клиента :()

Теперь мой вопрос: каков наилучший способ запустить запрос после ввода? Пока я могу думать о следующих путях.

  1. Fire 7 различных запросов от php
  2. Написать триггер для распространения входных данных в соответствующих таблицах?

Просто наведите мне, какой подход эффективен по производительности? Спасибо:)

Ответы [ 4 ]

2 голосов
/ 11 июля 2011

Как правило, вы хотите держаться подальше от триггеров, потому что вы будете наказаны позже, если вам придется загружать много данных.Хранимые процедуры - путь.Вы можете установить различные условия для распространения входных данных в разные таблицы, если это необходимо.

1 голос
/ 11 июля 2011

Я думаю, вам нужно переосмыслить ситуацию.Вы уже знаете, как здорово было бы иметь меньше столов для работы?Ну, почему бы не смоделировать эту ситуацию с правильно построенным представлением.Затем клиент (вы уверены, что это клиент? Иногда ops говорит «клиент», когда они имеют в виду «отчет, который мы должны предоставить позже») может иметь столько таблиц, сколько может обработать ваша база данных.И, кстати, вы все равно можете запускать вставки и обновления в представлении .

Поскольку кажется, что ваша база данных не имеет четкой связи со структурами данных PHP, мой инстинкт будетразделить два больше, а не меньше.Это означало бы на самом деле отдавать предпочтение хранимым процедурам и триггерам (при условии, что вышеприведенное не работает), что может быть сложнее для отладки, но это также означает, что PHP должен думать только о

это вещь называется"

Вместо

" OMG, так что это похоже на совершенно интенсивное первое, с чем я должен поговоритьно я не могу забытьтем более, что эти двое могли ... подождите, я пропустил свою очередь? "

Хорошо, PHP - это не ditz (мне действительно нравится язык), но он также должен бытьдействовать как глупо насколько возможно когда дело доходит до хранения вещей - это не его дело.

0 голосов
/ 11 июля 2011

Как часто, по вашему мнению, вам придется менять какие запросы запускать?

У вас есть доступ к серверу базы данных?

Знаете ли вы, какие обстоятельства должны запускать ваши триггеры?

Существуют ли другие процессы / приложения, записывающие данные в базу данных?

Если ваши запросы меняются очень часто, я бы использовал код на PHP, чтобы просто выполнить запросы для вас.

Если у вас нет доступа к серверу базы данных, вам, возможно, придется пойти на этот метод!Вам нужны разрешения для написания хранимых процедур и триггеров.

Если другие процессы пишут в ту же базу данных, вы должны обсудить ваши требования с соответствующими владельцами процессов!В противном случае в вашей базе данных могут появиться / изменить ненужные данные.

Лично я склонен избегать триггеров, если они не вызывают очень простые хранимые процедуры, и я на 100% уверен, что никто больше не будет беспокоитьсятриггер!

0 голосов
/ 11 июля 2011

Возможно, вы захотите написать хранимую процедуру, которая выполняет семь запросов.Подумайте, сколько транзакций вам нужно для выполнения этих семи запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...