Индексы на таблицу


8 0

У меня в команде есть один супер программист, который просто создает таблицы, и думает, что они магическим образом будут работать. Только что на сервере увидел очередной его шедевр:

CREATE TABLE [dbo].[TxnData](
	[TxnDataID] [bigint] IDENTITY(1,1) primary key,
	[TxnID] [bigint] NOT NULL,
	[Name] [varchar](50) NOT NULL,
	[Value] [varchar](255) NOT NULL,
)

Из таблицы следует, что таблица должна хранить данные о транзакциях. Для каждой транзакции Txn может быть создано несколько каких-то дополнительных записей с какой-то дополнительной информацией. 

Какая тут потенциальная проблема? Сразу говорю, что SQL выше - это все, что было запущено на сервере.

У теблицы есть только один индекс по первичному ключу. Вполне очевидно, что код будет искать записи по полю TxnID, а индекса нет и сервер просто умрет, когда база вырастит. 


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

Виталий

11 Июля 2013

Индусы детектед


DirectoriX

11 Июля 2013

Работает - не трогай
А вообще странно, как можно не создать очевидный индекс... Хорошо, что их можно потом добавлять, а то совсем печально было бы: база наполняется, производительность падает, а изменить ничего нельзя


Владимир

12 Июля 2013

Не знаю как в MSSQL, но например, в PostgreSql индекс автоматически создается по внешнему ключу, может он из этого следовал:).


Михаил Фленов

12 Июля 2013

Внешний ключ создан не был. У нас вообще почему-то не часто их создают.


alex.mrnv

15 Июля 2013

SQL не Python, всё стерпит. А разве у вас в команде не действуют какие нибудь определённые соглашения, ну хотя бы по томуже форматированию, коллективной читабельности ради.


Михаил Фленов

15 Июля 2013

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


Саша

19 Июля 2013

Привет, Михаил.
Я сам начинающий не опытный разработчик. ты уж пожалуйста не ругай человека, а просто объясни как надо правильно делать.

P.S.: спасибо за книгу "Transact-SQL В подлиннике", которую вы выложили в он-лайн бесплатно. Постоянно пользуюсь.


Михаил Фленов

19 Июля 2013

Индексы надо иногда создавать по полям, по которым планируется проводить поиск.


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне