вид базы данных по сравнению с программным видом Java

Все они работают:

#include <iostream>
using namespace std;

//Good, because manual memory management isn't needed and this uses
//less heap memory (or no heap memory) so this is safer if
//used in a low memory situation
void f() { throw string("foo"); }

//Valid, but avoid manual memory management if there's no reason to use it
void g() { throw new string("foo"); }

//Best.  Just a pointer to a string literal, so no allocation is needed,
//saving on cleanup, and removing a chance for an allocation to fail.
void h() { throw "foo"; }

int main() {
  try { f(); } catch (string s) { cout << s << endl; }
  try { g(); } catch (string* s) { cout << *s << endl; delete s; }
  try { h(); } catch (const char* s) { cout << s << endl; }
  return 0;
}

необходимо предпочесть h f к g. Обратите внимание, что в наименее предпочтительной опции необходимо освободить память явно.

55
задан Jaken Herman 10 April 2015 в 19:24
поделиться

6 ответов

Если вы извлекаете подмножество всех данных базы данных, например, отображаете на экране 20 строк из 1000, лучше выполнить сортировку по базе данных. Это будет быстрее и проще и позволит вам извлекать по одной странице строк (20, 50, 100) за раз вместо всех.

Если ваш набор данных довольно мал, сортировка в вашем коде может быть более удобной если вы хотите реализовать сложную сортировку. Обычно эту сложную сортировку можно выполнить в SQL , но не так просто, как в коде.

Короче говоря, практическое правило - сортировка через SQL , с некоторым преимуществом случаи к правилу.

53
ответ дан 26 November 2019 в 17:48
поделиться

В общем, вам лучше использовать ORDER BY в вашем запросе SQL - таким образом, если есть применимый индекс, вы можете получить свою сортировку " бесплатно »(в худшем случае, это будет такой же объем работы, как и в вашем коде, но часто это может быть меньше работы, чем это!).

33
ответ дан 26 November 2019 в 17:48
поделиться

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

4
ответ дан 26 November 2019 в 17:48
поделиться

Я бы позволил базе данных выполнять сортировку, в целом они очень хороши в этом.

3
ответ дан 26 November 2019 в 17:48
поделиться

Это не совсем так, но я недавно опубликовал кое-что, что касается сортировки на стороне базы данных и на стороне приложения. Статья посвящена технике .net, поэтому большая часть ее, вероятно, не будет вам интересна, но основные принципы остаются:

Отнесение сортировки на сторону клиента (например, jQuery, сортировка наборов данных / Dataview) может показаться заманчивым. И это действительно эффективный вариант для разбиения по страницам, сортировки и фильтрации, если (и только если):

1. набор данных невелик, и

1. мало заботятся о производительности и масштабируемости

По моему опыту, систем, отвечающих таким критериям, немного, и они очень редки. Обратите внимание, что невозможно смешивать и сопоставлять сортировку / разбиение по страницам в приложении / базе данных - если вы запрашиваете базу данных для несортированных 100 строк данных, затем отсортируйте эти строки на стороне приложения, вы, скорее всего, не получите ожидаемого набора данных. Это может показаться очевидным, но я видел ошибку достаточно много раз, и мне хотелось хотя бы упомянуть о ней.

Гораздо эффективнее сортировать и фильтровать в базе данных по ряду причин. Во-первых, механизмы баз данных оптимизированы для выполнения именно той работы, которую влекут за собой сортировка и фильтрация; это то, для чего был разработан их основной код. Но даже если это запретить - даже если предположить, что вы можете написать код, который мог бы соответствовать типу сортировки, фильтрации и производительности подкачки зрелого механизма базы данных - все же предпочтительнее выполнять эту работу в базе данных по той простой причине, что более эффективно ограничить объем данных, которые передаются из базы данных на сервер приложений.

Так, например, если у вас есть 10 000 строк до фильтрации, и ваш запрос сокращает это число до 75, фильтрация на клиенте приводит к данным из всех 10000 строк, передаваемых по сети (и в память вашего сервера приложений), где фильтрация на стороне базы данных приведет только к отфильтрованным 75 строкам перемещается между базой данных и приложением. он может оказать огромное влияние на производительность и масштабируемость.

Полный текст сообщения находится здесь: http://psandler.wordpress.com/2009/11/20/dynamic-search-objects-part-5sorting/

18
ответ дан 26 November 2019 в 17:48
поделиться

Let the database sort it. Then you can have paging with JPA easily without readin in the whole resultset.

1
ответ дан 26 November 2019 в 17:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: