Re: indexing error - key length not specified

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Perhaps I should of spoke more exactly. In MySQL 5.0 you can index these, but the maximum index length is limted by the storage engine. So you have to be specific as to how you index these columns.

The deal is that with large column fields making an index of several thousand characters (for example) doesn't help you that much, the index gets as big as the field (comparatively) and the performance gains from having an index is marginal, as I understand it. (an expert is free to jump in at this point)

So one might want to analyze why you're indexing this field at all. Perhaps something specialized like a fulltext index is more appropriate.

Take a look at this page in the docs: http://dev.mysql.com/doc/refman/5.0/en/indexes.html

It explains it somewhat. You can as it mentions specify the index size which the db should take, but you'll be indexing a subset of the actual data with the col_name() style of statement.

In my opinion, you might want to take a look at why you want to index such a large column, I don't see a reason myself unless it's something like a fulltext index.

I hope that helps,
-Micah

On 02/09/2007 04:59 PM, John wrote:
Micah,


You can't use that column type as an index because it's variable length.

Makes sense.


Make it a varchar or something that's definite to index it.

It is possible the value stored can reach up to about 2k characters, which
is too long for a varchar type.  Any recommendations as to what type to use
that wouldn't be variable length, but be able to store strings/values of
that size?

Thanks!

John

-----Original Message-----
From: Micah Stevens [mailto:micah@xxxxxxxxxxxxxxxxxx] Sent: Friday, February 09, 2007 6:29 PM
To: John Pillion
Cc: php-db@xxxxxxxxxxxxx
Subject: Re:  indexing error - key length not specified

You can't use that column type as an index because it's variable length.

Make it a varchar or something that's definite to index it.

-Micah

On 02/09/2007 03:56 PM, John Pillion wrote:
I am trying to set an index on a field in my table, but am getting the
following error:

    BLOB column 'ReadBy' used in key specification without a key length

The fieldtype is blob, though I get the same error whether blob or text,
or
the medium and long versions of each.  My first though, based on the
error,
was I needed to set a length to the field - but it won't accept/store any
length I give it (because it's a variable length?)

I'm using mysql on from 1and1 (hosting provider), though I don't know what
version they're running

.. any thoughts?

As an alternative, how much less efficient would it be to do a ".LIKE
'%mystring%'" versus a MATCH..?




[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux