Question: Which one is better: having a BLOB field in the same table or having a 1-TO-1 reference to it in another table?
I'm making a MySQL database whose main table is called item(ID, Description). This table is consulted by a program I'm developing in VB.NET which offers the possibility to double-click a specific item obtained with a query. Once opened its dedicated form, I would like to show an image stored in the BLOB field, a sort of item preview. The problem is I don't know where is better to create this BLOB field.

Assuming to have a table like this: Item(ID, Description, BLOB), will the BLOB field affect the database performance on queries like: 

```
SELECT ID, Description FROM Item;

```

If yes, what do you think about this solution:

```
Item(ID, Description)
Images(Item, File)

```

Where Images.Item references to Item.ID, and File is the BLOB field.

Answer: 
You can add the BLOB field directly to your main table, as BLOB fields are not stored in-row and require a separate look-up to retrieve its contents. Your dependent table is needless.

BUT another and preferred way is to store on your database table only a pointer (path to the file on server) to your image file. In this way you can retrive the path and access the file from your VB.NET application.
To quote [the documentation about blobs](https://dev.mysql.com/doc/refman/5.7/en/blob.html):

> 
> Each `BLOB` or TEXT value is represented internally by a separately allocated object. This is in contrast to all other data types, for which storage is allocated once per column when the table is opened.
> 
> 
> 

In simpler terms, the blob's storage isn't stored inside the table's row, only a pointer is - which is pretty similar to what you're trying to achieve with the secondary table. To make a long story short - there's no need for another table, MySQL already doesn't the same thing internally.