Potrzebuję użyć kolumny tekstowej jako klucz podstawowy dla mojej bazy danych sqlite. Mam również możliwość użycia funkcji mieszania, aby uzyskać 32-bitowe/64-bitowe int z moich wartości tekstowych (chcę użyć jako klucza podstawowego). Mogę więc użyć wartości int hash zamiast wartości tekstowej jako kluczy podstawowych. Ale następnie muszę przechowywać wartość surowego tekstu dodatkowo w tabeli.sqlite: Czy powinienem użyć kolumny tekstowej jako klucza głównego, czy przekonwertować ją za pomocą funkcji skrótu?
Ale czytałem, że sqlite używa wewnętrznie rowid, więc nie wiem, czy użycie funkcji skrótu i tak pomoże.
Czy sqlite zapisze na swoich stronach wartość wiersza lub tekst (gdy używam go zamiast wartości skrótu)? Kiedy przechowuje wartość tekstową, to myślę, że mogłaby zepsuć strony i użycie wartości mieszania byłoby lepsze.
Ale mam tu brak wiedzy. Mam nadzieję, że możesz mi pomóc.
Dlaczego potrzebujesz/chcesz użyć kolumny tekstowej jako klucza * podstawowego *? – Tim
@Tim, ponieważ jest to klucz, który pobieram dane. Jest to łańcuch o długości około 30 znaków. – Chris
Gdybym zamierzał odwołać się do tego stołu od innego lub innego, wybrałbym liczbę całkowitą autoinkrementującą jako PK i indeks na długim polu: 'select id, longtextvalue od T, gdzie longtextvalue =?'. – Tim