Help! MySQL не задает индекс

S
На сайте с 28.01.2016
Offline
44
604

Вот собственно код:


$d = 'name';
mysql_query("DROP TABLE `par`.`$d` ");
mysql_query("CREATE TABLE `par`.`$d` (
`oldurl` TINYTEXT ,
`newurl` TEXT
)");
mysql_query("CREATE UNIQUE INDEX id ON `par`.`$d` (
`oldurl`,`newurl`
)");

Команда на удаление работает - старая таблица удаляется, новая создается, а вот индексы не задаются. Нигде не найду ответ в чем может быть проблема. Если бы переменную $d не принимал - так в предыдущих командах все норм.

Aisamiery
На сайте с 12.04.2015
Offline
319
#1

seovisor, нельзя юзать индекс UNIQUE на полях типа Text

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
S
На сайте с 28.01.2016
Offline
44
#2
Aisamiery:
seovisor, нельзя юзать индекс UNIQUE на полях типа Text

Тогда как мне их задать?

Вообще у меня встречаются поля размером

3 символа,

1-5 символов,

10 - 260 символов.

Может им другие параметры задать?

---------- Добавлено 10.01.2017 в 17:22 ----------

Может им просто индекс задать?

Мне необходимо БД оптимизировать - скрипт много по ней бегает и жрет ресурсы процессора. Может тогда обычный индекс задать и все?

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#3

Для этого есть:

VARCHAR

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Aisamiery
На сайте с 12.04.2015
Offline
319
#4

seovisor,Не буду врать, но по моему индексы ограничены длинной, то есть varchar(255), так как длинна на один столбец для индекса не должна превышать 767 байт, 3 байта на utf8 итого 255*3 = 765

а зачем вам такие индексы там, в такой табличке?

---------- Добавлено 10.01.2017 в 18:37 ----------

seovisor:
Может им просто индекс задать?
Мне необходимо БД оптимизировать - скрипт много по ней бегает и жрет ресурсы процессора. Может тогда обычный индекс задать и все?

Индексами ограничивают выборку в большой таблице когда она не влазит вся в оперативку, по другому вы никак не оптимизируете. Если вам не достает скорости MySQL, переложите горячие данные в оперативку, например в memcached или redis

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий