Помощник
|
Обрезание значения до пробела и сортировка средствами MySQL |
zabmix
|
Сообщение
#1
|
||
|
|
||
|
|||
Arks |
17.5.2012, 17:19;
Ответить: Arks
Сообщение
#2
|
|
SET @fullname = CONCAT_WS(' ', 'Letchenko', 'Vika', 'Aleksandrovna'); SELECT CONCAT(SUBSTRING_INDEX(SUBSTRING_INDEX(@fullname, ' ', 2), ' ', -1), ' ', SUBSTRING_INDEX(SUBSTRING_INDEX(@fullname, ' ', 3), ' ', -1)) as newname; а про сортировку не понял что имелось в виду |
|
|
zabmix
|
Сообщение
#3
|
|
а про сортировку не понял что имелось в виду Всмысле уже по готовому имени, что в итоге получится отсортировать. А это быстро будет работать? По моему сложновато для MySQL или пойдет? просто выбор встал mysql или php как лучше реализовать и что быстрее, кстати строк будет не больше 50 |
|
|
Muxa_hb |
17.5.2012, 22:05;
Ответить: Muxa_hb
Сообщение
#4
|
|
имхо, проще всего вместо одного поля с ФИО создать три поля с именем, фамилией и отчеством в БД и извлекать не все поля.. и сортировать также - и проще, и быстрее, как мне кажется
чем разные "обрезания" делать и голову ломать как это сделать :) |
|
|
alexdrob |
17.5.2012, 22:14;
Ответить: alexdrob
Сообщение
#5
|
|
|
|
|
Arks |
17.5.2012, 22:44;
Ответить: Arks
Сообщение
#6
|
|
никто не мешает Вам таким способом 1 раз сконвертировать БД в новую схему с отдельными полями и все будет работать быстро, зачем при запросах то?
SUBSTRING_INDEX(SUBSTRING_INDEX(@fullname, ' ', <номер слова>), ' ', -1) - вот фактически выбор нужного слова. В общем не парьтесь. А вот когда надо собрать в ФИО при выборке просто используйте CONCAT/CONCAT_WS - это очень быстрые функции. Для mysql важно не количество строк а query_cost. Если в таблице 50 строк нафига Вам вообще mysql для этого? var_export/include или fwrite/file_get_contents(fread) всего и делов будет раз в 5-10 быстрее mysql.. или если myIsam можно писать через mysql а читать напрямую из файла БД. Если в таблице 10 лямов строк то выбирайте хоть 50 хоть 100500 все равно все будет тупить. Насчет сортировки - в данном случае сотрировка вообще не относится к выборке. CREATE TEMPORARY TABLE<>.. INSERT INTO tmp_table SELECT<>... SELECT FROM tmp_table ORDER BY<> .. DROP TABLE<> и вперед сортируйте что угодно. При сортировке mysql и так и так создает обычно временные таблицы из выборки - тут Вы просто делаете это явно за него чтобы подсказать оптимизатору что надо сортировать именно из временной таблицы(а то если не очень мног записей он может решить например сделать фулскан таблицы и сортировать файлсортом а уже потом что-то выбирать, если сочтет это быстрее сортировки из временной таблицы и в этом оптимизатор может ошибаться). С полнотекстовыми сортировками на php много гемероя так что не рекомендую - БД или sphinx справится лучше и быстрее. |
|
|
zabmix
|
Сообщение
#7
|
|
|
Arks, спасибо за столь подробный ответ, разжевали мне :)
А об этом нужно было позаботиться при проектировании бд :) Проще использовать один запрос в одном месте, чем изменить везде запросы и структуру БД :) А то что использовать файл в 50 строках, пожалуй отличное предложение, но не для данного случая. Всем спасибо :)
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery Разработка сайтов и сервисов под-ключ |
0 | alexey | 1427 | 24.11.2023, 14:46 автор: alexey |
|
Web программирование на С/С++/PHP/MySQL/SQL, высоконагруженные проекты Есть наработки в области бирж трафика, топов, тизеров, видео cj-тубов |
4 | DFService | 3472 | 8.4.2020, 18:02 автор: DFService |
|
Верстка, php + mysql, недорого | 3 | devprojectlab | 2780 | 28.10.2019, 18:53 автор: Mukis |
|
Нужен человек, который хорошо понимает php+mysql Нужен человек, который хорошо понимает php+mysql |
0 | dsugar | 2585 | 7.9.2018, 10:37 автор: dsugar |
|
Нуждаюсь в услугах вебмастера, знающего html, css, php, mysql | 1 | Bizota | 3057 | 21.8.2018, 1:33 автор: kalm |
Текстовая версия | Сейчас: 12.10.2024, 3:40 |