Максимальное значение по сравнению с размером длинных и двойных в.NET

Я не рекомендовал бы использовать STRAIGHT_JOIN без серьезного основания. Мой собственный опыт состоит в том, что оптимизатор запросов MySQL выбирает плохой план запросов чаще, чем я хотел бы, но не достаточно часто, что необходимо просто обойти его в целом, который является тем, что Вы сделали бы, если бы Вы всегда использовали STRAIGHT_JOIN.

Моя рекомендация состоит в том, чтобы оставить все запросы как регулярные СОЕДИНЕНИЯ. Если Вы обнаруживаете, что один запрос использует субоптимальный план запросов, я предложил бы сначала пытаться переписать или реструктурировать запрос немного, чтобы видеть, выберет ли оптимизатор затем лучший план запросов. Кроме того, для innodb, по крайней мере, удостоверьтесь, что это не просто, что Ваши индексные статистические данные являются устаревшими (, АНАЛИЗИРУЮТ ТАБЛИЦУ ). Это может заставить оптимизатор выбирать плохой план запросов. Подсказки оптимизатора должны обычно быть Вашим последним средством.

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

10
задан Konstantin 17 October 2009 в 16:07
поделиться

3 ответа

Двойной краткий ответ сохраняет только наиболее значимую цифру, а не все цифры, которые могут быть в номере. например, если у вас есть двойное> максимальное значение long, оно не будет сохранять никакой информации для цифр после десятичной точки или любой цифры слева от десятичной точки.

Подробнее см. What every компьютерный ученый должен знать об арифметике с плавающей запятой

20
ответ дан 3 December 2019 в 17:59
поделиться

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

Например, в double, когда у вас есть число вроде 100 миллиардов. Это может быть ровно 100 000 000 000 или 100 000 000 000 000 000 000 000 000 0001

0
ответ дан 3 December 2019 в 17:59
поделиться

Типы на основе целых чисел имеют целые диапазоны чисел от -2 ^ (n-1) 2 ... 2 ^ (n-1) -1 (со знаком), или 0 ... 2 ^ n-1 (без знака).

Переменные с фиксированной точкой такие же, как и целочисленные типы, только с постоянным коэффициентом (например, для 0,01: 0,01 * (0 ... 2 ^ n-1 )).

Переменные с плавающей запятой (float и double) на любом языке используют несколько бит для показателя степени, а остальные - для числа перед показателем. Они менее точны (x + 1 может равняться x, если x - очень большое число), но имеют гораздо больший диапазон.

2
ответ дан 3 December 2019 в 17:59
поделиться
Другие вопросы по тегам:

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