У меня есть таблица с столбцами varchar(50)
и float
. Мне нужно (очень быстро) посмотреть получить float, связанный с данной строкой. Даже с индексированием это довольно медленно.SQL-индексирование на varchar
Я знаю, однако, что каждая строка связана с целым числом, которое я знаю во время поиска, так что каждая строка сопоставляется с уникальным целым числом, но каждое целое не сопоставляется с уникальной строкой. Можно подумать об этом как о древовидной структуре.
Есть ли что-нибудь, чтобы быть получен путем добавления этого целого числа в таблице, индексирование на нем, и используя запрос типа:
SELECT floatval FROM mytable WHERE phrase=givenstring AND assoc=givenint
Это Postgres, и если вы не могли сказать, у меня очень мало опыт работы с базами данных.
Сравнение указательных клавиш также намного дороже с varchar, поскольку они знают локаль. Целочисленный индекс определенно будет намного быстрее, чем любой другой вариант. –
@Magnus: сравнение должно быть сделано только «log (n)» раз, поэтому я бы не назвал это «намного» более дорогостоящим, но вы правы, он также добавляет некоторые циклы «CPU». – Quassnoi