#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
innodb таблиц нет.
только Myisam.
Сервер:
Процессор 4 X QEMU Virtual CPU version 2.3.0 2399.996 MHz
Оперативная память 2624 / 7822 MiB
Размер дискового пространства 39.97 GiB
Файл подкачки (swap) 0 MiB
Средняя загрузка (1, 5, 15 мин) 0.42 0.32 0.28
Продолжительность работы 3 hours 44 minutes
Количество процессов 161
Apache 2.4.6-45.el7.centos.4
MySQL 5.5.52-1.el7
PHP 5.4.16-42.el7
Perl 5.16.3-291.el7
Kernel 3.10.0-514.26.2.el7.x86_64
edogs: По большому счету это никак не сократить. Выборка идет по индексам - место каждой записи ищется быстро, но проблема в том, что бы выбрать каждую запись - надо к ней отдельно обратиться. Если значения идут так или иначе подряд, то иногда помогает alter table order by field - что бы подряд стоящие значения были рядом и могли выбираться за "один проход" (это актуально даже в случае ссд, хотя и менее чем с хдд). Еще момент - посмотрите не выбираете ли Вы случаем text/blob/varchar поля, за ними мускулу приходится лезть в "отдельное место" каждый раз, т.е. если выбирается 1 строка, а в ней 4 текстовых поля - это по сути требуют 1+4=5 обращений к диску. При этом не забывайте, что если в таблице есть хоть одно поле с переменной длиной (varchar, text, blob), то даже поля с фиксированной длиной тоже будут хранится как поля с переменной.
Да, несколько varchar полей выбираю.
SELECT `id`,`name`,`url` FROM `organization` WHERE `id` IN (123,345,346 ... 34534) AND `city`=518 AND `status`=1 ORDER BY `name` ASC LIMIT 0,20
Попробовал выбирать только id
SELECT `id` FROM `organization` WHERE `id` IN (123,345,346 ... 34534) AND `city`=518 AND `status`=1 ORDER BY `name` ASC LIMIT 0,20
Время выполнения примерно такое же.
Если есть строки с переменной длиной в БД, например название организации. Как быть?
Лучше оставить varchar или сделать char и пускай пробелами заполняется?
edogs: 1) Если элементы реально идут подряд, попробуйте id>=1 and id<=5 или еще лучше - id between 1 and 5
2) Если в последнем случае выбирается больше чем (примерно) 30% строк от размера таблицы, индекс может не использоваться, тут может помочь force index
3) select * в общем случае это ад и трэш. Наверняка хотя бы пару полей можно исключить, лучше писать select field2, field5 .. чем просто тупо *
Спасибо за ответ.
1. Элементы идут не подряд.
2. Выбирается максимум 5-10% строк. В большинстве случаев не более 1%. (таблица 9 000 000 строк)
Верстку всю кидай во вьюху. Так же во вьюху передавай данные. И уже данные подставляй в верстку во вьюхе
Вы не совсем поняли как это работает.
Скрипт не как ни связан с проектом на Laravel.
Он на отдельном домене генерирует готовую вьюху исходя из заданных параметров.
Эта вьюха сохраняется в проекте с Laravel и с ней уже работает верстальщик/программист, как с нормальной вьюхой.
Разумеется, никто не генерирует таким PHP скриптов вьюху в самом приложении Laravel :)
Что это за верстальщик который не может нажать автоформатирование в IDE? Он в notepad верстает?
PS
Как я вижу это Laravel. Вы там совсем упоролись так вьюхи генерить? Кто придумал так говнокодить?
А как их генерить? Подскажите классное решение.
какой смысл у вашей проблемы? на кой вам эта табуляция в коде?🍿
PHP скрипт генерирует HTML код.
Скажем так автоматическая верстка по параметрам, которые переданы в PHP скрипт. (шорткоды)
Этот код будет дорабатывать верстальщик, по этому он должен быть читабельным.
Когда проблемы с табуляцией, код становиться не читабельным и верстальщику приходиться табуляцию вручную проставлять.
Хотелось бы, чтобы скрипт это делал автоматически.
Добавляйте в нужное место \t
В том то и проблема.
Что все переменные берутся из БД.
Шорткод может стоять в любом месте.
По этому я не знаю куда вставлять \t и вообще какое их количество вставлять.
Из википедиии🤣🤣
Прежде чем это писать, Вы сами смотрели то на Википедии информацию и на сколько она полная по всем городам России?
Удалось найти городские районы в формате SQL.
Прикрепляю к сообщению дамп базы.
Регионы и города России. А так же городские районы. Надеюсь кому-то пригодиться!
Загрузили бы my.cfg или my.ini т.е. настройки mysql вашей.
my.cnf
innodb таблиц нет.
только Myisam.
Сервер:
По большому счету это никак не сократить.
Выборка идет по индексам - место каждой записи ищется быстро, но проблема в том, что бы выбрать каждую запись - надо к ней отдельно обратиться.
Если значения идут так или иначе подряд, то иногда помогает alter table order by field - что бы подряд стоящие значения были рядом и могли выбираться за "один проход" (это актуально даже в случае ссд, хотя и менее чем с хдд).
Еще момент - посмотрите не выбираете ли Вы случаем text/blob/varchar поля, за ними мускулу приходится лезть в "отдельное место" каждый раз, т.е. если выбирается 1 строка, а в ней 4 текстовых поля - это по сути требуют 1+4=5 обращений к диску.
При этом не забывайте, что если в таблице есть хоть одно поле с переменной длиной (varchar, text, blob), то даже поля с фиксированной длиной тоже будут хранится как поля с переменной.
Да, несколько varchar полей выбираю.
Попробовал выбирать только id
Время выполнения примерно такое же.
Если есть строки с переменной длиной в БД, например название организации. Как быть?
Лучше оставить varchar или сделать char и пускай пробелами заполняется?
1) Если элементы реально идут подряд, попробуйте id>=1 and id<=5 или еще лучше - id between 1 and 5
2) Если в последнем случае выбирается больше чем (примерно) 30% строк от размера таблицы, индекс может не использоваться, тут может помочь force index
3) select * в общем случае это ад и трэш. Наверняка хотя бы пару полей можно исключить, лучше писать select field2, field5 .. чем просто тупо *
Спасибо за ответ.
1. Элементы идут не подряд.
2. Выбирается максимум 5-10% строк. В большинстве случаев не более 1%. (таблица 9 000 000 строк)
3. Да, знаю. Здесь так написал, чтобы сократить.