توی MySQL یه چیز داریم generated column. هم میشه یه فیلد داخل json رو index کرد و هم میشه از اون فیلد داخل json یه generated column ساخت:
https://planetscale.com/blog/indexing-json-in-mysql
ALTER TABLE activity_log ADD COLUMN email VARCHAR(255)
GENERATED ALWAYS as (properties->>"$.request.email");
https://planetscale.com/blog/indexing-json-in-mysql
❤1👍1
یه تیبل ساختم، بالای یه میلیون رکورد اضافه کردم و کوئری زدم:
نتیجه این کوئری توی 0.0424 ثانیه برگشت که عدد قابل ملاحظهایه. بعد یه index روی ستون name اضافه کردم (این کار مقداری زمان برد، چون با اضافهکردن ایندکس یه کپی از بخشی از دیتای ما گرفته میشه؛ راجع به B-Tree بخونید) و مجددا همون کوئری رو اجرا کردم و این بار 0.0007 ثانیه طول کشید که نتیجه برگرده.
در حالت دوم، فقط و فقط 461 سطر رو درگیر کردیم تا دیتای مورد نظر رو پیدا کنیم!
اینجا هم حتی بدون ایندکس، زمان اجرای کوئری به شکل چشمگیری کمتر میشه. هرچی رکوردها بیشتر باشه، این تفاوت چشمگیرتره.
SELECT * FROM `users` WHERE name = 'Faye';
نتیجه این کوئری توی 0.0424 ثانیه برگشت که عدد قابل ملاحظهایه. بعد یه index روی ستون name اضافه کردم (این کار مقداری زمان برد، چون با اضافهکردن ایندکس یه کپی از بخشی از دیتای ما گرفته میشه؛ راجع به B-Tree بخونید) و مجددا همون کوئری رو اجرا کردم و این بار 0.0007 ثانیه طول کشید که نتیجه برگرده.
در حالت دوم، فقط و فقط 461 سطر رو درگیر کردیم تا دیتای مورد نظر رو پیدا کنیم!
SELECT id, name FROM `users` WHERE name = 'Faye';
اینجا هم حتی بدون ایندکس، زمان اجرای کوئری به شکل چشمگیری کمتر میشه. هرچی رکوردها بیشتر باشه، این تفاوت چشمگیرتره.
🔥4
زدم:
بعد این خط رو اضافه کردم:
حالا وقتی توی ترمینال بزنم pma، اتوماتیک هم PHPMyAdmin رو ران میکنه و هم توی براوزرم باز میشه. :)
nano ~/.bashrc
بعد این خط رو اضافه کردم:
alias pma='xdg-open http://127.0.0.1:8001 && php -S 127.0.0.1:8001 -t /home/dreamweaver/phpmyadmin'
حالا وقتی توی ترمینال بزنم pma، اتوماتیک هم PHPMyAdmin رو ران میکنه و هم توی براوزرم باز میشه. :)
👍1🔥1
-- All the rows, everybody knows that!
SELECT COUNT(*) FROM users;
-- How many developers each company has.
SELECT company_id, COUNT(*) FROM `users` GROUP BY company_id;
-- How many verified users we have. (=not null values)
SELECT COUNT(verified_at) as verified_users FROM users;
-- How many languages should we support?
SELECT COUNT(DISTINCT language) FROM users;
👍3
اگه یه خلاصه درباره نسخههای مختلف PHP خواستید، این رو بخونید:
https://www.cloudways.com/blog/php-version-history/#:~:text=A.,with%20minor%20releases%20and%20updates.
https://www.cloudways.com/blog/php-version-history/#:~:text=A.,with%20minor%20releases%20and%20updates.
The Official Cloudways Blog
PHP Version History: Brief Timeline of World’s Most Used Back-end Language [INFOGRAPHICS]
Here’s the brief timeline showing how PHP emerged as one of the world’s most used back-end language over the years.
👍2
یه API هست که هر ثانیه فقط یه ریکوست از هر آیپی قبول میکنه. یعنی دومین ریکوست رو بفرستید، بلاک میشید.
ایدهام برای حل این چالش این بود که long-polling داشته باشیم (تا جواب نباشه، ریکوست معطل میمونه): به این صورت که من و شما توی یه ثانیه دوتا ریکوست میفرستیم و درخواست اطلاعات میکنیم:
Me: abcd
You: wxyz
این دوتا رو توی صف میریزیم و یه تایمر هم هر سه ثانیه میاد و دیتای توی صف رو جمعشده توی یه ریکوست برای اون API میفرسته و نتیجه رو توی یه slice (یه چیزی شبیه آرایه) میریزه که هر کدوممون اطلاعات خودمون رو ازش برداریم.
چالش رو حل میکنه، اما پیادهکردن همین long-polling خودش یه چالش بزرگتره. 😁
ایدهام برای حل این چالش این بود که long-polling داشته باشیم (تا جواب نباشه، ریکوست معطل میمونه): به این صورت که من و شما توی یه ثانیه دوتا ریکوست میفرستیم و درخواست اطلاعات میکنیم:
Me: abcd
You: wxyz
این دوتا رو توی صف میریزیم و یه تایمر هم هر سه ثانیه میاد و دیتای توی صف رو جمعشده توی یه ریکوست برای اون API میفرسته و نتیجه رو توی یه slice (یه چیزی شبیه آرایه) میریزه که هر کدوممون اطلاعات خودمون رو ازش برداریم.
چالش رو حل میکنه، اما پیادهکردن همین long-polling خودش یه چالش بزرگتره. 😁
🔥2
Philocode
جالبه: timeout 2 sleep 20
time sleep 2
real 0m2.004s
user 0m0.001s
sys 0m0.003s