Как ускорить простое соединение

Так что ни один из вышеперечисленных вещей не работал для меня. Кроме этого: отредактируйте httpd.conf,

, найдите строку

Listen 80 

и измените на

listen 0.0.0.0:80 

, если вы работаете в Windows 8, у него есть, чем заняться с использованием ipv6 вместо ipv4

12
задан Community 23 May 2017 в 12:25
поделиться

6 ответов

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

18
ответ дан 2 December 2019 в 04:53
поделиться

Способы сделать код более безопасным (и более правильным).

  1. Не делайте ненужную копию. В этом примере нет очевидного требования, что вам действительно нужно копировать somestring . Вы можете вывести его напрямую.
  2. Если вам нужно сделать копию строки, напишите функцию для этого (или используйте strdup, если она у вас есть). Тогда вам нужно только исправить это в одном месте.
  3. По возможности инициализируйте указатель на копию сразу после ее объявления.
  4. Не забудьте выделить место для нулевого терминатора.
  5. Не забудьте проверить возврат значение из malloc .
  6. Не забудьте освободить память malloc .
  7. Не вызывайте printf с ненадежной строкой формата. Используйте printf ("% s", copy) или put (copy) .
6
ответ дан 2 December 2019 в 04:53
поделиться

I Спорим, ваша проблема - огромное количество строк, которые вставляются в эту временную таблицу. Есть ли способ добавить предложение WHERE перед SELECT каждой строкой в ​​базе данных?

2
ответ дан 2 December 2019 в 04:53
поделиться

Некоторые вещи, о которых вам нужно позаботиться, - это индексы, план запроса и статистика.

Поместите индексы в attributeId. Или убедитесь, что существуют индексы, где attributeId является первым столбцом в ключе (SQL Server все еще может использовать индексы, если это не первый столбец, но это не так быстро).

Выделите запрос в Query Analyzer и нажмите ^ L, чтобы посмотреть план. Вы можете увидеть, как таблицы соединяются вместе. Практически всегда использовать индексы лучше, чем не использовать (есть крайние случаи, когда, если таблица достаточно мала, индексы могут замедлить вас - но пока просто имейте в виду, что 99% времени индексы являются хорошо)

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

Это должно помочь вам начать. На самом деле, можно написать целую главу о том, как база данных может оптимизировать даже такой простой запрос.

3
ответ дан 2 December 2019 в 04:53
поделиться

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

 Выражения : PK - ExpressionID, AttributeID
Атрибуты: PK - AttributeID

Если предположить, что каждый PK является кластеризованным индексом, это по-прежнему означает, что для таблицы выражений требуется сканирование индекса. Возможно, вы захотите создать индекс для таблицы Expressions , например: AttributeID, ExpressionID . Это поможет остановить текущее сканирование индекса.

1
ответ дан 2 December 2019 в 04:53
поделиться

Еще нужно добавить несколько индексов, например это:

attributes.{attributeId, attributeName, attributeValue}
expressions.{attributeId, expressionID}

Это хакерство! Но полезно, если это последнее средство.

Это создает план запроса, на который можно "полностью ответить" с помощью индексов. Обычно индекс фактически вызывает двойной ввод-вывод в указанном выше запросе: один для попадания в индекс (т. Е. Зондирование таблицы), другой для получения фактической строки, на которую ссылается индекс (для получения имени атрибута и т. Д.).

Это особенно полезно, если «атрибуты» или «выражения» представляют собой широкую таблицу. То есть таблица, из которой дорого извлекать строки.

Наконец, лучший способ ускорить ваш запрос - это добавить предложение WHERE!

1
ответ дан 2 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

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