Tinyint по сравнению с битом?

pandas представляет удобное решение:

import pandas as pd
import numpy as np

df=pd.DataFrame(myarray, columns=["x", "y"])
df["Section"]=df.index

df.to_json(orient="records")

это дает:

 '[{"x":148,"y":362,"Section":0},{"x":153,"y":403,"Section":1},
{"x":163,"y":443,"Section":2},{"x":172,"y":483,"Section":3},
{"x":186,"y":521,"Section":4},{"x":210,"y":553,"Section":5},
{"x":239,"y":581,"Section":6},{"x":273,"y":604,"Section":7},
{"x":314,"y":611,"Section":8},{"x":353,"y":602,"Section":9}]'

Решение немного отличается, но вы можете легко найти свой путь в чистом Python превратить его в вашу структуру.

76
задан Cœur 21 July 2018 в 17:42
поделиться

12 ответов

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

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

86
ответ дан ScottS 24 November 2019 в 11:18
поделиться

Мне нравится использовать символ (1) с 'T' или 'F'. Да этим можно злоупотребить с другими значениями, но по крайней мере легко просмотреть в отчетах или других местах, где битовые или двоичные значения более трудны работать с.

-2
ответ дан Darryl Braaten 24 November 2019 в 11:18
поделиться

Если Вы используете MySQL, то не рекомендуется использовать Тип данных bit - http://www.xaprb.com/blog/2006/04/11/bit-values-in-mysql/

-1
ответ дан BrynJ 24 November 2019 в 11:18
поделиться

@Kevin: я полагаю, что можно использовать group by на битовых полях (SQL Server 2005):

declare @t table (
    descr varchar(10),
    myBit1 bit, 
    myBit2 bit
)
insert into @t values ('test1', 0, 1)
insert into @t values ('test2', 1, 0)
insert into @t values ('test3', 1, 1)
insert into @t values ('test4', 0, 0)

select myBit1, count(myBit1) from @t group by myBit1
select myBit2, count(myBit1) from @t group by myBit2

Результаты:

myBit1 
------ -----------
0      2
1      2

myBit2 
------ -----------
0      2
1      2
0
ответ дан Community 24 November 2019 в 11:18
поделиться

Мы создаем все наши таблицы с международным "векторным" полем. Мы затем используем то поле в качестве набора 32 битов, которые мы можем присвоить для любой цели. (Потенциально использование группы битов для ряда состояний). Избегает нас имеющий необходимость продолжать добавлять в полях признака, если мы забываем.

0
ответ дан Joe 24 November 2019 в 11:18
поделиться

Я просто попытался группироваться на бите (SQL Server 2k5), и он хорошо работал для меня. Мне нравится использовать правильный тип данных для приложения. Если это - истинное/ложное поле, то укусил, то, что я использую...

1
ответ дан Rob 24 November 2019 в 11:18
поделиться

Я использую бит, потому что он сохраняет меня имеющий необходимость использовать проверочное ограничение, и потому что мой ORM автоматически преобразует бит в nullable булевскую переменную (C#), который я очень ценю однажды кодирование.

2
ответ дан RedFilter 24 November 2019 в 11:18
поделиться

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

2
ответ дан tvanfosson 24 November 2019 в 11:18
поделиться

Предыдущее сообщение StackOverflow: , Каково различие между BIT и TINYINT в MySQL?

При добавлении нового столбца "BOOL", MySQL на самом деле использует TINYINT.

я просто придерживался бы с BOOL (иначе TINYINT) и движение с жизнью.

3
ответ дан Community 24 November 2019 в 11:18
поделиться
5
ответ дан armandino 24 November 2019 в 11:18
поделиться

Я использую биты в надлежащих случаях. Кроме него являющийся семантически корректным типом (количество семантики!), несколько битовых полей (до 8) в одной строке (на SQL Server, так или иначе) могут быть консолидированы в единственный байт устройства хранения данных. После восьмого дополнительный байт необходим для следующих 8 и так далее.

Ссылки:

15
ответ дан John Rudy 24 November 2019 в 11:18
поделиться

Бит..., если Вы не имеете "верны / ложь / файл, не найденный" клан

В случае, если Вы не получили ссылку...

И в случае Linq2SQL, разрядных работ с истинным/ложным, который помогает программировать для. Существуют преимущества для обоих.

И там также программирует обслуживание для рассмотрения. Что происходит, если Вы (или младший программист интерна) используете 2, 3, 25, 41, 167, 200 и т.д.? Где это документируется? Биты самодокументируют и довольно универсальные.

18
ответ дан Mike Robinson 24 November 2019 в 11:18
поделиться
Другие вопросы по тегам:

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